ในบทนี้ คุณจะได้เรียนรู้เกี่ยวกับตัวดำเนินการในภาษา Java และการใช้งานตัวดำเนินการ ในภาษา Java มีตัวดำเนินการประเภทต่างๆ ดังนี้
String concatenating operator (+)
String
concatenating operator หรือเครื่องหมายในการเชื่อมต่อ String
นั้นจะใช้สำหรับต่อ String เป็น String เดียวกัน ตัวแปรแบบ String
นั้นเป็นคลาสที่สร้างมาเพื่อสนับสนุนการเขียนโปรแกรมในภาษา Java
เพื่อให้ง่ายขึ้น โดยเราใช้เครื่องหมาย
+ เมื่อใช้กับ String
นั่นหมายถึงเป็นการนำมาต่อกันซึ่งเกิดจาก Overloading Operators
คุณจะได้เรียนในภายหลัง
ซึ่งโดยปกติเครื่องหมายนี้จะใช้กับตัวเลขเพื่อบวกเลขเข้าด้วยกัน
เมื่อ
คุณนำ String ไปต่อกับตัวเลขโดยใช้เครื่องหมาย concatenating
จะให้ตัวเลขนั้นกลายเป็น String
คุณได้เห็นว่าเราได้ใช้งานมันไปบ้างแล้วจากบทเรียนก่อนหน้า
ต่อไปมาดูตัวอย่างการใช้เครื่องหมาย String concatenating
public class StringConcatenating {
public static void main (String[] atgs) {
String firstName = "Mateo";
String lastName = "Marcus";
int number = 34;
System.out.println(firstName + lastName);
System.out.println(firstName + " " + lastName);
System.out.println(firstName + number);
System.out.println(lastName + true);
}
}
ใน
ตัวอย่างเราได้ทำการนำตัวแปร String มาต่อกันและ String ต่อกับตัวเลข
และค่าของ Boolean
มันสามารถต่อได้กับข้อมูลทุกประเภทและข้อมูลเหล่านั้นจะถูกแปลงเป็น String
ซึ่งจะได้ผลลัพธ์การรันดังข้างล่าง
MateoMarcus
Mateo Marcus
Mateo34
Marcustrue
Assignment operator
Assignment
operator (ตัวดำเนินการกำหนดค่า)
เป็นตัวดำเนินการที่ให้กับหนดค่าให้กับตัวแปร จาก Literal หรือ Expression
โดยใช้เครื่องหมายเท่ากับ (
=) ตัวอย่างการใช้งานตัวดำเนินการกำหนดค่าเป็นดังนี้
int a = 10;
float b = 5.3f;
String name = "Marcus";
Random r = new Random();
MyClass object1 = new MyClass();
จาก
ตัวอย่าง เป็นการใช้ตัวดำเนินการกำหนดค่า
ในการกำหนดค่าให้กับตัวแปรประเภทต่างๆ ตัวแปรที่คุณเห็นสองแบบแรกเป็น
primitive data type ในภาษา Java ส่วน String และ Random
เป็นคลาสไลบรารี่ที่มีอยู่ในภาษา Java เราสามารถใช้งานได้เลย
สำหรับอันสุดท้ายเป็นคลาสที่ผู้ใช้สร้างขึ้นเอง
ซึ่งมันอยู่ในเรื่องการเขียนโปรแกรมแบบออบเจ็คที่คุณจะได้เรียนต่อไปในบทนี้
Arithmetic operators
Arithmetic operators
(ตัวดำเนินการทางคณิตศาสตร์) เป็นตัวนำเนินการที่เกิดจาก Operand และ
Operator ตั้งแต่ 1 ตัวขึ้นไปมาคำนวณเพื่อให้ได้ผลลัพธ์ใหม่
มันทำงานร่วมกับตัวดำเนินการกำหนดค่า (
=) โดยตัวดำเนินการมี 5 แบบ
ตารางของตัวดำเนินการทางคณิตศาสตร์ในภาษา Java
| Symbol | Name | Example |
| + | Addition | c = a + b |
| - | Subtraction | c = a - b |
| * | Multiplication | c = a * b |
| / | Division | c = a / b |
| % | Modulo | c = a % b |
คุณอาจจะเห็นบางอย่างใหม่ก็คือ ตัวดำเนินการ Modulo (
%)
เป็นตัวดำเนินการในการหารเอาเศษ (reminder) ที่มันจำเป็นมากๆ
ในการเขียนโปรแกรมคอมพิวเตอร์
ต่อไปดูตัวอย่างการใช้ตัวดำเนินการทางคณิตศาสตร์
public class ArithmeticOperator {
public static void main (String[] atgs) {
int a = 5;
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));
}
}
คุณ
จะเห็นว่ามันก็คือ การ บวก ลบ คูณ หาร เท่านั้นเอง
ในคอมพิวเตอร์นั้นก็มีการคำนวณเช่นเดียวกัน
และผลลัพธ์ของมันตรงไปตรงมาดังข้างล่าง
5 + 3 = 8
5 - 3 = 2
5 * 3 = 15
5 / 3 = 1
5 % 3 = 2
Compound assignment
Compound
assignment ถูกใช้เพื่ออัพเดทค่าของตัวแปรจากค่าเดิมของมันที่มีอยู่
โดยมันจะเป็นรูปแบบย่อของตัวดำเนินการแบบ Arithmetic Operator
และตัวดำเนินการ Bitwise operators
เพื่อให้เขียนได้รวดเร็วและลดความผิดพลาดในการเขียนโปรแกรมได้มากกว่า
ตารางของตัวดำเนินการ Compound assignment ในภาษา Java
| Operator | Example | Equivalent to |
| += | a += 2; | a = a + 2 |
| -= | a -= 2; | a = a - 2 |
| *= | a *= 2; | a = a * 2 |
| /= | a /= 2; | a= a / 2 |
| %= | a %= 2; | a = a % 2 |
| >>= | a >>= 2; | a = a >> 2 |
| <<= | a <<= 2 | a = a << 2 |
| &= | a & = 2; | a = a & 2 |
| ^= | a ^= 2; | a= a ^ 2 |
| |= | a |= 2; | a = a | 2 |
Increment and decrement
ตัว
ดำเนินการต่อไปที่ใช้บ่อยในการเขียนโปรแกรมก็คือ Increment Operator
(ตัวดำเนินการเพิ่มค่า) และ Decrement Operator (ตัวดำเนินการลดค่า)
มันถูกใช้เพื่อเพิ่มหรือลดค่าของตัวแปรครั้งละ 1 โดยแบ่งออกได้เป็นดังนี้
ตารางของตัวดำเนินการเพิ่มค่าและลดค่าในภาษา Java
| Operator | Example | Equivalent to |
| ++ (prefix) | ++a; | a = a + 1; |
| ++ (posfix) | a++; | a = a + 1; |
| -- (prefix) | --a; | a = a - 1; |
| -- (postfix) | a--; | a = a - 1; |
ตัว
ดำเนินการทั้งสองแบบนั้นจะแบ่งย่อยลงไปอีกเป็น prefix และ postfix
ตัวดำเนินการที่เป็นแบบ prefix
จะทำการเพิ่มค่าของตัวแปรขึ้นทันทีก่อนที่จะประมวลผลคำสั่งนั้น
ส่วนตัวดำเนินการแบบ posfix
จะเพิ่มค่าหลังจากที่ประมวลผลคำสั่งนั้นเสร็จสิ้นแล้ว
ก็คือคำสั่งที่จบด้วยเครื่องหมาย
; มาดูตัวอย่างที่จะช่วยให้คุณเข้าใจได้ง่ายขึ้น
public class IncrementDecrement {
public static void main (String[] atgs) {
int i = 5;
int j = 5;
System.out.println("++i = " + (++i));
System.out.println("j++ = " + (j++));
// At this line either i and j are 6
}
}
จากโค้ดตัวอย่างข้างบน เป็นการใช้ตัวดำเนินการเพิ่มและลดค่า เราได้กำหนดค่าให้กับตัวแปร i และ j มีค่าเท่ากัน และแสดงผลออกทางหน้าจอ
++i นั้นจะเพิ่มค่าก่อนที่แสดงผล ส่วน
j++ นั้นจะเพิ่มค่าหลังจากที่แสดงผลค่าเสร็จแล้ว จึงทำให้ผลลัพธ์ของ i ที่แสดงออกมาเป็น 6 และ j เป็น 5 ดังผลการทำงานข้างล่าง
++i = 6
j++ = 5
Relational and comparison operators
Relational
and comparison operators (ตัวดำเนินการเปรียบเทียบ)
ใช้สำหรับเปรียบเทียบข้อมูล โดยการสร้าง expression ขึ้นมา
ค่าที่ได้จากการเปรียบเทียบจากตัวดำเนินการเหล่านี้จะเป็น Boolean Value
(true or false) มันมักจะใช้กับคำสั่งเปรียบเทียบเช่น if while do-while
for เพื่อสร้างเงื่อไขบางอย่าง
ตารางของตัวดำเนินการเปรียบเทียบในภาษา Java
| Operater | Example | Result |
| == | a == b | true if a equal to b, otherwise false |
| != | a != b | true if a not equal to b, otherwise false |
| < | a < b | true if a less than b, otherwise false |
| > | a > b | true if a greater than b, otherwise false |
| <= | a <= b | true if a less than or equal to b, otherwise false |
| >= | a >= b | true if a greater than or equal to b, otherwise false |
ต่อไปมาดูตัวอย่างการใช้งานของตัวดำเนินการเปรียบเทียบ
public class ComparisonOperators {
public static void main (String[] atgs) {
int a = 5;
int b = 8;
System.out.println(a + " equal to " + b + " -> " + (a == b));
System.out.println(a + " not equal to " + b + " -> " + (a != b));
System.out.println(a + " less than " + b + " -> " + (a < b));
System.out.println(a + " more than " + b + " -> " + (a > b));
System.out.println(a + " less than or equal " + b + " -> " + (a <= b));
System.out.println(a + " more than or equal " + b + " -> " + (a >= b));
}
}
ข้างบนเป็นการกำหนดค่าให้กับตัวแปน a เป็น 5 และ เป็น 8 และนำมาเปรียบเทียบกันด้วยตัวดำเนินการแบบต่าง ๆ จะได้ผลลัพธ์ดังข้างล่าง
5 equal to 8 -> false
5 not equal to 8 -> true
5 less than 8 -> true
5 more than 8 -> false
5 less than or equal 8 -> true
5 more than or equal 8 -> false
Logical operators
Logical
operators (ตัวดำเนินการตรรกศาสตร์) เป็นตัวดำเนินการที่ใช้สำหรับ
expression ที่มากกว่า 1 expression ขึ้นไป
โดยตัวดำเนินการตรรกศาสตร์ในภาษา Java มีดังนี้
| Operator | Name | Example |
| ! | Not | ! true |
| && | And | true && true |
| || | Or | true || false |
โดย
ตัวดำเนินการตรรกศาสตร์จะใช้เปรียบเทียบกับค่าสองค่า ยกเว้นตัวดำเนินการ
Not ค่าที่นำมาเป็นประเมินนั้นจะต้องเป็น Boolean และผลลัพธ์ที่ได้จะเป็น
Boolean เช่นกัน
ตารางค่าความจริงของตัวดำเนินการตรรกศาสตร์ Not
| Value 1 | Expression | Result |
| true | ! true | false |
| false | !false | true |
ตัวดำเนินการทางตรรกศาสตร์ Not จะกลับค่าจาก true เป็น false และในทางกลับกัน
ตารางค่าความจริงของตัวดำเนินการตรรกศาสตร์ And
| Value 1 | Value 2 | Expression | Result |
| true | true | true && true | true |
| true | false | true && false | false |
| false | false | false && false | false |
ตัวดำเนินการทางตรรกศาสตร์ And ถ้า expression ย่อยทั้งสองเป็น true จะได้ผลลัพธ์เป็น true นอกเหนือจากนั้นจะได้ผลัพธ์เป็น false
ตารางค่าความจริงของตัวดำเนินการตรรกศาสตร์ Or
| Value 1 | Value 2 | Expression | Result |
| true | true | true || true | true |
| true | false | true || false | true |
| false | false | false || false | false |
ตัว
ดำเนินการทางตรรกศาสตร์ Or ถ้า expression ย่อยอย่างน้อยหนึ่งตัวเป็น true
จะได้ผลลัพธ์เป็น true นอกเหนือจากนั้นจะได้ผลัพธ์เป็น false
ต่อไปมาดูตัวอย่างการใช่ตัวดำเนอนการตรรกศาสตร์ในการเขียนโปรแกรม เรามักจะใช้กับคำสั่งตรวจสอบเงื่อนไข เช่น if
public class LogicalOperators {
public static void main (String[] atgs) {
int score = 8;
int level = 4;
if (score >= 10 && level >= 5) {
System.out.println("You get a gold badge.");
}
if (score >= 10 || level >= 3) {
System.out.println("You get a bronze badge.");
}
}
}
จาก
ตัวอย่างโปรแกรมด้านบน มีตัวแปรเก็บคำแนนและเลเวล โดยใช้คำสั่ง if
ในการเปรียบเทียบ คุณจะได้เรียนในบทต่อไป ถ้าคะแนนของเขาตั้งแต่ 10
และเลเวลตั้งแต่ 5 ขึ้นไปเขาจะได้รับ Gold badge และถ้าคะแนนของเราตั้งแต่ 10
หรือมีเลเวลตั้งแต่ 3 เขาจะได้รับ Bronze badge ดังนั้นเมื่อรันโปรแกรมเขาจึงได้รับแค่ Bronze badge
You get a bronze badge.
Bitwise operators
Bitwise
operators (ตัวดำเนินการระดับบิต)
จะดำเนินการกับในรูปแบบของหนึ่งบิตหรือมากกว่า หรือในตัวเลขฐานสอง
โดยการนำคู่ของบิตแต่ละตัวมาคำนวณโดยการใช้หลักการของตัวดำเนินการทาง
คณิตศาสตร์
ตารางตัวดำเนินการระดับบิต
| Symbol | Description |
| & | Bitwise AND |
| | | Bitwise inclusive OR |
| ^ | Bitwise exclusive OR |
| ~ | bit inversion |
| << | Shift bits left |
| >> | Shift bits right |
ต่อไปมาดูตัวอย่างของตัวดำเนินการระดับบิตแบบต่างๆ ในการเขียนโปรแกรม
public class BitwiseOperators {
public static void main (String[] atgs) {
int a = 5;
int b = 3;
System.out.println(a + " & " + b + " = " + (a & b));
System.out.println(a + " | " + b + " = " + (a | b));
System.out.println("~" + a + " = " + (~a));
System.out.println(a + " << 1 = " + (a << 1));
}
}
จาก
ตัวอย่างด้านบน เราได้ใช้ตัวดำเนินการบิต 4 ชนิด โดยทำกับตัวแปร Integer
ซึ่งมีขนาด 8 บิต ดังนั้นการทำงานของโปรแกรมแสดงได้ดังตารางนี้
| base 10 | base 2 | Result | Result base 10 |
| 5 & 3 | 00000101 & 00000011 | 00000001 | 1 |
| 5 | 3 | 00000101 | 00000011 | 00000001 | 7 |
| ~5 | ~00000101 | 11111010 | -6 |
| 5 << 1 | 00000101 << 1 | 00001010 | 10 |
และ
จะได้ผลลัพธ์ต่อไปนี้เมื่อรันโปรแกรม
ในตัวอย่างนี้นั้นคุณจะต้องรู้จักเกี่ยวกับเลขฐานเพื่อที่จะเข้าใจมัน
ซึ่งอยู่นอกขอบเขตของบทเรียน Java นี้
5 & 3 = 1
5 | 3 = 7
~5 = -6
5 << 1 = 10
Conditional ternary operator
Conditional
ternary operator เป็นตัวดำเนินการเปรียบเทียบเงือนไขแบบสั้น ที่ประเมิน
expression และให้ผลลัพธ์เป็นค่าหนึ่ง ถ้า expression เป็น true
และอีกค่าถ้า expression เป็น false โดยมันมีรูปแบบการใช้งานดังนี้
expression ? valueForTrue : valueForFalse ;
โดย
การทำงานของมันนั้นสามารถทำหน้าที่ได้คล้ายคำสั่ง if
ถ้าเงื่อนไขและการทำงานไม่ซับซ้อน และมีแค่คำสั่งเดียวที่จะให้ทำงาน
โดยมีตัวอย่างการใช้งานดังนี้
public class TernaryOperator {
public static void main (String[] atgs) {
int n = -2;
String name = "Mateo";
System.out.println(n < 0 ? "n is a negative number." : "n is a positive number.");
System.out.println(name.length() <= 5 ? "Your name is accepted." : "Your name is too long." );
}
}
และมันจะได้ผลลัพธ์ดังข้างล่าง
n is a negative number.
Your name is accepted.
ใน
บทนี้ คุณได้เรียนรู้เกี่ยวกับตัวดำเนินการในภาษา Java อย่างละเอียด
ซึ่งมันมีความจำเป็นที่จะในไปใช้ในการเขียนโปรแกรมในบทที่เหลือต่อไป
ในบทต่อไปเราจะทำการเขียนโปรแกรมกับตัวอย่างที่จำลองโปรแกรมจริง
โดยการรับข้อมูลจากผู้ใช้ทางคีย์บอร์ด
ไม่มีความคิดเห็น:
แสดงความคิดเห็น