ตัวดำเนินการ(Operators) และ ลำดับในการประมวล
ตัวดำเนินการทางคณิตศาสตร์ (Arithmetic
Operators)
คือคำสั่งพื้นฐานในการที่จะสั่งให้เครื่องคอมพิวเตอร์ประมวลผลการคำนวณพื้นฐานทางคณิตศาสตร์
เช่น การบวก ลบ คูณ หาร ตัวดำเนินการแต่ละตัวจะมีลำดับการประมวลผลตามที่กำหนด
ดังตาราง และในการประมวลผลจะเริ่มทำจากทางซ้ายไปขวา และจะทำการประมวลผลในวงเล็บก่อน
Operator
|
รูปแบบ
และการทำงาน
|
ลำดับในการประมวลผล
|
"*"(Multiply)
|
หาผลคูณ
|
1
|
"/" (Divide)
|
หาผลหาร
|
2 |
"%" (Modulus)
|
หาเศษที่เหลือจากการหาร
|
3
|
"+" (Add)
|
การบวก
|
4
|
"-" (Minus)
|
op1-op1:การลบ
|
5
|
ตัวอย่าง การใช้ตัวดำเนินการทางคณิตศาสตร์
class BasicMath{
public static void main (String
args[]){
int a = 1 + 1; int
b = a * 3; int c = b / 4;
int d = b " a; int
e = -d; int f = 9%5;
System.out.println("a = "
+ a); System.out.println("b = " + b);
System.out.println("c = "
+ c); System.out.println("e = " + e);
System.out.println("9%5 =
" + 9%5);
}
}
|
ตัวดำเนินการสัมพันธ์ (Relational Operators)
คือตัวดำเนินการที่ทำหน้าที่เปรียบเทียบค่าระหว่างตัวแปรสองตัว
หรือนิพจน์สองนิพจน์ โดยจะคืนค่าเป็นจริงหรือเท็จ (Boolean)
Relational
Operator
|
ตัวอย่าง
|
<
|
Op1<Op2 : คืนค่าความเป็นจริงถ้า
Op1 น้อยกว่า Op2
|
a=(1<3); //aจะมีค่าเป็นจริง
|
<=
|
Op1<=Op2 : คืนค่าความเป็นจริงถ้า
Op1 น้อยกว่า Op2 หรือเท่ากับ Op2
|
a=(5<=7); //a จะมีค่าเป็นจริง
|
>
|
Op1>Op2 :คืนค่าความเป็นจริงถ้า
Op1 มากกว่า Op2
|
a=(5>7); //a จะมีค่าเป็นจริง
|
>=
|
Op1>=Op2 : คืนค่าความเป็นจริงถ้า
Op1 มากกว่า หรือเท่ากับ Op2
|
a=(5>=7); //a จะมีค่าเป็นจริง
|
==
|
Op1==Op2 : คืนค่าความเป็นจริงถ้า
Op1 เท่ากับ Op2
|
a=(5==7); // a จะมีค่าเป็นเท็จเพราะ
5 ไม่เท่ากับ 7
|
!=
|
Op1!=Op2 : คืนค่าความเป็นจริงถ้า
Op1 ไม่เท่ากับ Op2
|
a=(5!=7); // a จะมีค่าเป็นจริง
เพราะ 5 ไม่เท่ากับ 7
|
":
|
(expression)"a:b :คือค่าตัว
operand a ถ้า expression เป็นจริง
|
a=(3>5)"false:true; //a
จะมีค่าเป็นจริง เพราะผลการเปรียเทียบ 3 มากกว่า 5 เป็นเท็จ เมื่อค่าที่ได้เป็นเท็จจะเลือกค่า
true
|
ตัวดำเนินการตรรกะ (Logical Operators)
ตัวดำเนินการทางตรรกะจะทำประมวลผลกับตัวแปรประเภท
Boolean หรือ นิพจน์ที่ให้ค่าของข้อมูลเป็นจริงหรือ เท็จ
ค่าความจริงตัวที่1
|
ค่าความจริงตัวที่2
|
ผลการประมวลแบบ
AND
|
ผลการประมวลแบบ
OR
|
ผลการประมวลแบบ
XOR
|
true หรือ 1
|
true หรือ 1
|
true หรือ 1
|
true หรือ 1
|
false หรือ 0
|
true หรือ 1
|
false หรือ 0
|
false หรือ 0
|
true หรือ 1
|
true หรือ 1
|
false หรือ 0
|
true หรือ 1
|
false หรือ 0
|
true หรือ 1
|
true หรือ 1
|
false หรือ 0
|
false หรือ 0
|
false หรือ 0
|
false หรือ 0
|
false หรือ 0
|
รูปแบบของ Boolean Operator และตัวอย่างการประมวลผล
Operator
|
รูปแบบ
และการทำงาน
|
ตัวอย่าง
|
! หรือ(NOT)
|
!(Op1) เปลี่ยนค่าความจริงเป็นค่าตรงกันข้าม
|
a= !(true); // a จะมีค่าเป็นเท็จ
|
&&หรือ(AND)
|
Op1 && Op2 คืนค่าความจริงถ้า
Op1 เท่ากับ Op2
|
a= !(true && false);
// a จะมีค่าเป็นเท็จ
|
|| หรือ (OR)
|
Op1 || Op2 คืนค่าความจริง ถ้า
Op1 ไม่เท่ากับ Op2
|
a= !(true); // a จะมีค่าเป็นเท็จ
|
ตัวอย่าง การใช้ Operator แบบ boolean
class BoolLogic{
public static void main(String
args[]){
boolean a = true; boolean
b = false;
boolean c = a | b; boolean
d = a & b;
boolean e = a ^ b; boolean
f = (!a & b) | (a & !b);
boolean g = !a;
System.out.println("a = "
+ a); System.out.println("b = " + b);
System.out.println("a | b = "
+ c); System.out.println("a & b = " + d);
System.out.println("a ^ b = "
+ e); System.out.println("!a = " + g);
System.out.println("!a &
b | a & !b = " + f);
}
}
|
ตัวดำเนินการระดับ (Bitwise Operator)
ในการจัดเก็บข้อมูลประเภท Interger,
short, int และ long จะเก็บในรูปแบบบิต และการเก็บข้อมูลจะเป็นแบบเครื่องหมาย
Operator
|
รูปแบบ
และการทำงาน
|
ตัวอย่าง
|
ผลลัพธ์ที่ได้
|
~
|
~ Op : ทำ complement คือ ทำการเปลี่ยนค่าของบิต
1 เป็น 0 และเปลี่ยนบิตที่มีค่า 0 เป็น 1
|
a= 0x0005
|
-6 |
<<, >>
|
การย้ายบิตไปทางซ้าย และทางขวา
|
a=
0x0005 << 2
a= 0x0005 >> 2 |
20
1 |
>>>
|
การย้ายบิตไปทางขวาเสมือนไม่มีเครื่องหมาย
|
a=
0x0005 >>> 2
a= 0xFFF5 >>> 2 |
1
16381 |
&
|
ประมวลผลแบบ Bitwise AND
|
a= 0x0005 & a = 0x0007;
|
5
|
^
|
ประมวลผลแบบ Bitwise XOR
|
a= 0x0005 ^ a= 0x0007;
|
2
|
|
|
ประมวลผลแบบ Bitwise OR
|
a= 0x0005 | a= 0x0007;
|
7
|
ลำดับในการประมวลของ Operators ต่าง ๆ
ตัวกระทำ
(Operators)
|
ลำดับ
|
ประเภทของการประมวลผล
|
() วงเล็บ
|
1
|
|
++(Increment), --(Decrement),
+(Unary plus), -(unary minus)
!(Not)
~(Complement)
(type_cast)
|
2
|
การคำนวณ
การคำนวณ
Boolean
integer
ทุกรูปแบบ
|
*(Multiply),/(Divide),%(modulus)
|
3
|
การคำนวณ
|
+(Add),-(subtract)
|
4
|
การคำนวณ
|
<< (Left shift),>>(Right
shift),>>>(zero fill)
|
5
|
จำนวนเต็ม
|
< (Less than), <==(less
than or equal), >(greater than), >==(greater than or equal)
Instanceof()
|
6
|
การคำนวณ object, (เปรียบเทียบ
object)
|
==(Equal),!=(not equal)
|
7
|
ข้อมูลพื้นฐาน และ object
|
&(Bitwise AND)
|
8
|
จำนวนเต็ม
|
^ (Bitwise XOR)
|
9
|
จำนวนเต็ม
|
| (Bitwise OR)
|
10
|
จำนวนเต็ม
|
s&& (AND)
|
11
|
Boolean
|
|| (OR)
|
12
|
Boolean
|
":
|
13
|
Boolean
|
= ,*= , /=, %=, +=, -=, <<=,
=>>, >>>, &=, ^=, !=
|
14
|
อื่น ๆ
|
|
|
|
ตัวอย่าง การคำนวณโดยใช้ Operator1
class OpEquals{
public static void main (String
args[]){
int a =1; int b =
2; int c = 3;
a += 5; b *= 4;
c +=a * b; c %=6;
System.out.println("a = "
+ a); System.out.println("b = " + b);
System.out.println("c = "
+ c);
}
}
|
ตัวอย่าง การคำนวณโดยใช้ Operator2
class IncDec{
public static void main(String
ars[]){
int a = 1; int b =
2;
int c = ++b; int d
= a++;
c++;
System.out.println("a = "
+ a); System.out.println("b = " + b);
System.out.println("c = "
+ c); System.out.println("d = " + d);
}
}
|
|