ในบทนี้ คุณจะได้เรียนรู้เกี่ยวกับตัวดำเนินการในภาษา 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 อย่างละเอียด
ซึ่งมันมีความจำเป็นที่จะในไปใช้ในการเขียนโปรแกรมในบทที่เหลือต่อไป
ในบทต่อไปเราจะทำการเขียนโปรแกรมกับตัวอย่างที่จำลองโปรแกรมจริง
โดยการรับข้อมูลจากผู้ใช้ทางคีย์บอร์ด
ไม่มีความคิดเห็น:
แสดงความคิดเห็น