Operators ในภาษาจาวา -พื้นฐานjava

Operators in java

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
คือ ตัวดำเนินการทางคณิตศาสตร์ เช่น

OperatorDescribtion
+บวก
ลบ
*คูณ
/หาร
%หารเอาเศษ

ตัวอย่างการใช้งานตัวดำเนินการทางคณิตศาสตร์…

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) เป็นตัวดำเนินการที่ใช้ในการเพิ่มหรือลดค่าของตัวแปร

OperatorExampleDescription
++(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 ซึ่งเราจะเรียนในบทถัดไป

OperatorDescription
>มากกว่า
<น้อยกว่า
>=มากกว่าเท่ากับ
<=น้อยกว่าเท่ากับ
==เท่ากับ
!=ไม่เท่ากับ

ตัวอย่างการใช้งานตัวดำเนินการสัมพันธ์…

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

OperatorNameDescription
&&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

OperatorExampleEquivalent to
+=x += yx = x+y
-=x -= yx = x-y
*=x *= yx = x*y
/=x /= yx = x/y
%=x %= yx = x%y
>>=x >>= yx = x>>y
<<=x <<= yx =x<<y
&=x &= yx = x&y
^=x ^= yx = x^y
|=x |= yx = 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 จะไม่รองรับการทำงานนี้

OperatorDescription
&Bitwise AND
|Bitwise OR
~Bitwise NOT
^Bitwise XOR
>>Shift Right
<<Shift Left

ตารางแสดงการทำงานของ Logical Operators แบบบิตต่อบิต

ABA&BA|B~AA^B
111100
100101
010111
000010

เทคนิคการจำ:
AND => 1 ทั้งคู่เป็น 1
OR   => 0 ทั้งคู่เป็น 0
NOT => กลับค่า
XOR => เหมือนกัน 0 ต่างกัน 1

เพื่อให้เข้าใจมากขึ้น เราขอยกตัวอย่างเช่น

operatorANDORNOTXOR
x = 1050110 10010110 1001~0110 10010110 1001
y = 850101 01010101 01010101 0101
Result0100 00010111 11011001 01100011 1100
Result base 1065125-10660

ถ้าอยากเข้าใจเรื่องตัวดำเนินการระดับบิตเราต้องรู้เรื่องเลขฐานก่อน ซึ่งเราจะไม่พูดถึงในบทนี้

ตัวอย่างการใช้งานตัวดำเนินการระดับบิต…

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

OperatorDescribtionMeaning
>>Shift Rightเลื่อนทุกบิตไปทางขวา
<<Shift Leftเลื่อนทุกบิตไปทางซ้าย

เช่น

Operatorbase 2ResultDescribtion
>>01100010 >> 300001100เลื่อนบิตไปทางขวาสามตัว
และเติมบิต 0 ด้านซ้ายสามตัว
<<00000101 << 1000001010เลื่อนบิตไปทางซ้ายหนึ่งตัว
และเติมบิต 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

บทนี้เราได้เรียนรู้เรื่องตัวดำเนินการแล้ว ในบทถัดไปเราจะเรียนเรื่องคำสั่งในการเช็คเงื่อนไขในภาษาจาวา ว่ามีอะไรบ้างและใช้งานอย่างไร