Operators คืออะไร?
Operator หรือตัวดำเนินการ คือสิ่งที่เอาไว้จัดการกับข้อมูลต่างๆ เช่น การบวก ลบ คูณ หาร และอื่นๆอีกมากมาย บทนี้ Matter Devs จะพาทุกคนไปเรียนรู้เกี่ยวกับ Operators ในภาษาจาวากัน
ในภาษา java สามารถแบ่ง Operators ได้ 6 แบบ คือ
1. Arithmetic Operators
2. Comparison Operators
3. Logical Operators
4. Compound Operators
5. Bitwise Operators
6. Conditional Operators
1. Arithmetic Operators
คือ ตัวดำเนินการทางคณิตศาสตร์ เช่น
Operator | Describtion |
+ | บวก |
– | ลบ |
* | คูณ |
/ | หาร |
% | หารเอาเศษ |
ตัวอย่างการใช้งานตัวดำเนินการทางคณิตศาสตร์…
public class Arithmatic { public static void main(String[] args) { int a = 24; int b = 3; System.out.println("a+b = " +(a+b)); System.out.println("a-b = " +(a-b)); System.out.println("a*b = " +(a*b)); System.out.println("a/b = " +(a/b)); System.out.println("a%b = " +(a%b)); } }
จะได้ผลลัพธ์ดังนี้…
a+b = 27
a-b = 21
a*b = 72
a/b = 8
a%b = 0
นอกจาก + – * / % แล้ว เรายังมีตัวดำเนินการเพิ่มค่า-ลดค่า (Increment and Decrement) เป็นตัวดำเนินการที่ใช้ในการเพิ่มหรือลดค่าของตัวแปร
Operator | Example | Description |
++(Prefix) | ++a | เพิ่มค่าให้ a ก่อนแล้วนำไปใช้ |
++(Postfix) | a++ | นำค่า a ไปใช้ก่อน แล้วค่อยเพิ่มค่า |
–(Prefix) | –b | ลดค่าให้ b ก่อนแล้วนำไปใช้ |
–(Postfix) | b– | นำค่า b ไปใช้ก่อน แล้วค่อยลดค่า |
เพื่อให้เข้าใจมากขึ้น เราขอยกตัวอย่างโค้ดด้านล่างนี้…
public class Prepost { public static void main(String[] args) { int a = 5; int b = 5; System.out.println("a++ = " + (a++)); System.out.println("a = " + a); System.out.println("++a = " + (++a)); System.out.println("b-- = " + (b--)); System.out.println("b = " + b); System.out.println("--b = " + (--b)); } }
จะได้ผลลัพธ์ดังนี้…
a++ = 5
a = 6
++a = 7
b– = 5
b = 4
–b = 3
2. Comparison Operators
คือ ตัวดำเนินการเปรียบเทียบ ใช้เปรียบเทียบความสัมพันธ์ เช่น มากกว่า น้อยกว่า ซึ่งผลลัพธ์ที่ได้คือ true หรือ false ส่วนใหญ่จะนำมาใช้เมื่อต้องการเช็คเงื่อนไข if for while do-while ซึ่งเราจะเรียนในบทถัดไป
Operator | Description |
> | มากกว่า |
< | น้อยกว่า |
>= | มากกว่าเท่ากับ |
<= | น้อยกว่าเท่ากับ |
== | เท่ากับ |
!= | ไม่เท่ากับ |
ตัวอย่างการใช้งานตัวดำเนินการสัมพันธ์…
public class Relational { public static void main (String[] atgs) { int a = 5; int b = 8; System.out.println(a + " > " + b + " -> " + (a > b)); System.out.println(a + " < " + b + " -> " + (a < b)); System.out.println(a + " >= " + b + " -> " + (a >= b)); System.out.println(a + " <= " + b + " -> " + (a <= b)); System.out.println(a + " = " + b + " -> " + (a == b)); System.out.println(a + " != " + b + " -> " + (a != b)); } }
จะได้ผลลัพธ์ดังนี้…
5 > 8 -> false
5 < 8 -> true
5 >= 8 -> false
5 <= 8 -> true
5 = 8 -> false
5 != 8 -> true
3. Logical Operators
คือ ตัวดำเนินการทางตรรกศาตร์ คือการนำ boolean มาทำการ AND, OR หรือ NOT กัน ผลลัพธ์ที่ได้คือ true หรือ false
Operator | Name | Description |
&& | And | เป็น true เมื่อทั้งคู่เป็น true |
|| | Or | เป็น false เมื่อทั้งคู่เป็น false |
! | Not | กลับค่ากัน จาก true เป็น false หรือจาก false เป็น true |
ตัวอย่างการใช้งานตัวดำเนินการตรรกศาสตร์…
public class Logical { public static void main(String[] args) { int a = 10,b = 5; System.out.println((a==b)&&(a>b));//false&&true System.out.println((a>b)||(a!=b));//true||false System.out.println(!(a<b)); } }
จะได้ผลลัพธ์ดังนี้…
false
true
true
4. Compound Operators
คือ ตัวดำเนินการประกอบ ใช้เพื่ออัพเดทค่าของตัวแปร โดยจะเป็นรูปแบบย่อของตัวดำเนินการแบบ Arithmetic Operators
Operator | Example | Equivalent to |
+= | x += y | x = x+y |
-= | x -= y | x = x-y |
*= | x *= y | x = x*y |
/= | x /= y | x = x/y |
%= | x %= y | x = x%y |
>>= | x >>= y | x = x>>y |
<<= | x <<= y | x =x<<y |
&= | x &= y | x = x&y |
^= | x ^= y | x = x^y |
|= | x |= y | x = x|y |
ตัวอย่างการใช้งานตัวดำเนินการประกอบ…
public class Compound { public static void main(String[] args) { int x = 5,y = 5; System.out.println(x+=y); System.out.println(x); System.out.println(x-=y); System.out.println(x*=y); } }
จะได้ผลลัพธ์ดังนี้…
10
10
5
25
5. Bitwise Operators
คือ ตัวดำเนินการระดับบิต ใช้กับตัวเลขจำนวนเต็ม เช่น byte, short, int, long หรือเป็นตัวอักษร (char) เท่านั้น ตัวแปรชนิดอื่น เช่น float หรือ boolean จะไม่รองรับการทำงานนี้
Operator | Description |
& | Bitwise AND |
| | Bitwise OR |
~ | Bitwise NOT |
^ | Bitwise XOR |
>> | Shift Right |
<< | Shift Left |
ตารางแสดงการทำงานของ Logical Operators แบบบิตต่อบิต
A | B | A&B | A|B | ~A | A^B |
1 | 1 | 1 | 1 | 0 | 0 |
1 | 0 | 0 | 1 | 0 | 1 |
0 | 1 | 0 | 1 | 1 | 1 |
0 | 0 | 0 | 0 | 1 | 0 |
เทคนิคการจำ:
AND => 1 ทั้งคู่เป็น 1
OR => 0 ทั้งคู่เป็น 0
NOT => กลับค่า
XOR => เหมือนกัน 0 ต่างกัน 1
เพื่อให้เข้าใจมากขึ้น เราขอยกตัวอย่างเช่น
operator | AND | OR | NOT | XOR |
x = 105 | 0110 1001 | 0110 1001 | ~0110 1001 | 0110 1001 |
y = 85 | 0101 0101 | 0101 0101 | 0101 0101 | |
Result | 0100 0001 | 0111 1101 | 1001 0110 | 0011 1100 |
Result base 10 | 65 | 125 | -106 | 60 |
ถ้าอยากเข้าใจเรื่องตัวดำเนินการระดับบิตเราต้องรู้เรื่องเลขฐานก่อน ซึ่งเราจะไม่พูดถึงในบทนี้
ตัวอย่างการใช้งานตัวดำเนินการระดับบิต…
public class Bitwise { public static void main (String[] atgs) { int a = 105; int b = 85; System.out.println(a + " & " + b + " = " + (a & b)); System.out.println(a + " | " + b + " = " + (a | b)); System.out.println("~" + a + " = " + (~a)); System.out.println(a + " ^ " + b + " = " + (a^b)); } }
จะได้ผลลัพธ์ดังนี้…
105 & 85 = 65
105 | 85 = 125
~105 = -106
105 ^ 85 = 60
ตัวดำเนินการแบบ Bit Shift
Operator | Describtion | Meaning |
>> | Shift Right | เลื่อนทุกบิตไปทางขวา |
<< | Shift Left | เลื่อนทุกบิตไปทางซ้าย |
เช่น
Operator | base 2 | Result | Describtion |
>> | 01100010 >> 3 | 00001100 | เลื่อนบิตไปทางขวาสามตัว และเติมบิต 0 ด้านซ้ายสามตัว |
<< | 00000101 << 1 | 000001010 | เลื่อนบิตไปทางซ้ายหนึ่งตัว และเติมบิต 0 ด้านขวาหนึ่งตัว |
ตัวอย่างการใช้งานตัวดำเนินการแบบ Bit Shift…
public class BitShift { public static void main (String[] atgs) { int a = 98,b = 5; System.out.println(a + " >> " +3+ " = " + (a>>3)); System.out.println(b + " << " +1+ " = " + (b<<1)); } }
จะได้ผลลัพธ์ดังนี้…
98 >> 3 = 12
5 << 1 = 10
6. Conditional Operators
คือ ตัวดำเนินการแบบมีเงื่อนไข ใช้ในการเปรียบเทียบเงื่อนไข ประกอบไปด้วยเครื่องหมาย ? จะเขียนอยู่ในรูป
Condition ? ValueWhenConditionTrue : ValueWhenConditionFalse
ตัวอย่างการใช้งานตัวดำเนินการแบบมีเงื่อนไข…
public class Conditional { public static void main(String[] args) { System.out.println( 2>3 ? "Yes" : "No"); System.out.println( 2<3 ? "Yes" : "No"); } }
จะได้ผลลัพธ์ดังนี้…
No
Yes
บทนี้เราได้เรียนรู้เรื่องตัวดำเนินการแล้ว ในบทถัดไปเราจะเรียนเรื่องคำสั่งในการเช็คเงื่อนไขในภาษาจาวา ว่ามีอะไรบ้างและใช้งานอย่างไร