Java - ตัวดำเนินการพื้นฐาน
Java จัดเตรียมชุดตัวดำเนินการที่หลากหลายเพื่อจัดการกับตัวแปร เราสามารถแบ่งตัวดำเนินการ Java ทั้งหมดออกเป็นกลุ่มต่อไปนี้ -
- ตัวดำเนินการเลขคณิต
- ตัวดำเนินการเชิงสัมพันธ์
- ตัวดำเนินการ Bitwise
- ตัวดำเนินการทางตรรกะ
- ผู้ดำเนินการมอบหมาย
- ตัวดำเนินการอื่น ๆ
ตัวดำเนินการเลขคณิต
ตัวดำเนินการทางคณิตศาสตร์ใช้ในนิพจน์ทางคณิตศาสตร์ในลักษณะเดียวกับที่ใช้ในพีชคณิต ตารางต่อไปนี้แสดงรายการตัวดำเนินการเลขคณิต -
สมมติตัวแปรจำนวนเต็ม A ถือ 10 และตัวแปร B ถือ 20 จากนั้น -
แสดงตัวอย่าง
ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
---|---|---|
+ (เพิ่มเติม) | เพิ่มค่าที่ด้านใดด้านหนึ่งของตัวดำเนินการ | A + B จะให้ 30 |
- (การลบ) | ลบตัวถูกดำเนินการทางขวามือออกจากตัวถูกดำเนินการด้านซ้าย | A - B จะให้ -10 |
* (การคูณ) | คูณค่าที่ด้านใดด้านหนึ่งของตัวดำเนินการ | A * B จะให้ 200 |
/ (แผนก) | แบ่งตัวถูกดำเนินการทางซ้ายด้วยตัวถูกดำเนินการทางขวามือ | B / A จะให้ 2 |
% (โมดูลัส) | แบ่งตัวถูกดำเนินการทางซ้ายด้วยตัวถูกดำเนินการทางขวามือและส่งคืนส่วนที่เหลือ | B% A จะให้ 0 |
++ (เพิ่มขึ้น) | เพิ่มค่าของตัวถูกดำเนินการขึ้น 1 | B ++ ให้ 21 |
- (ลดลง) | ลดค่าของตัวถูกดำเนินการลง 1 | B-- ให้ 19 |
ตัวดำเนินการเชิงสัมพันธ์
มีตัวดำเนินการเชิงสัมพันธ์ต่อไปนี้ที่สนับสนุนโดยภาษา Java
สมมติว่าตัวแปร A ถือ 10 และตัวแปร B ถือ 20 จากนั้น -
แสดงตัวอย่าง
ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
---|---|---|
== (เท่ากับ) | ตรวจสอบว่าค่าของตัวถูกดำเนินการสองค่าเท่ากันหรือไม่ถ้าใช่เงื่อนไขจะกลายเป็นจริง | (A == B) ไม่เป็นความจริง |
! = (ไม่เท่ากับ) | ตรวจสอบว่าค่าของตัวถูกดำเนินการสองค่าเท่ากันหรือไม่หากค่าไม่เท่ากันเงื่อนไขจะกลายเป็นจริง | (A! = B) เป็นจริง |
> (มากกว่า) | ตรวจสอบว่าค่าของตัวถูกดำเนินการด้านซ้ายมากกว่าค่าของตัวถูกดำเนินการด้านขวาหรือไม่ถ้าใช่เงื่อนไขจะกลายเป็นจริง | (A> B) ไม่เป็นความจริง |
<(น้อยกว่า) | ตรวจสอบว่าค่าของตัวถูกดำเนินการด้านซ้ายน้อยกว่าค่าของตัวถูกดำเนินการด้านขวาหรือไม่ถ้าใช่เงื่อนไขจะกลายเป็นจริง | (A <B) เป็นจริง |
> = (มากกว่าหรือเท่ากับ) | ตรวจสอบว่าค่าของตัวถูกดำเนินการด้านซ้ายมากกว่าหรือเท่ากับค่าของตัวถูกดำเนินการด้านขวาหรือไม่ถ้าใช่เงื่อนไขจะกลายเป็นจริง | (A> = B) ไม่เป็นความจริง |
<= (น้อยกว่าหรือเท่ากับ) | ตรวจสอบว่าค่าของตัวถูกดำเนินการด้านซ้ายน้อยกว่าหรือเท่ากับค่าของตัวถูกดำเนินการด้านขวาหรือไม่ถ้าใช่เงื่อนไขจะกลายเป็นจริง | (A <= B) เป็นจริง |
ตัวดำเนินการ Bitwise
Java กำหนดตัวดำเนินการระดับบิตหลายตัวซึ่งสามารถใช้ได้กับประเภทจำนวนเต็ม long, int, short, char และ byte
ตัวดำเนินการ Bitwise ทำงานกับบิตและดำเนินการแบบบิตต่อบิต สมมติว่า a = 60 และ b = 13; ตอนนี้ในรูปแบบไบนารีพวกเขาจะเป็นดังนี้ -
a = 0011 1100
b = 0000 1101
-----------------
a & b = 0000 1100
a | b = 0011 1101
a ^ b = 0011 0001
~ a = 1100 0011
ตารางต่อไปนี้แสดงรายการตัวดำเนินการระดับบิต -
สมมติตัวแปรจำนวนเต็ม A ถือ 60 และตัวแปร B ถือ 13 แล้ว -
แสดงตัวอย่าง
ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
---|---|---|
& (บิตและ) | ไบนารี AND Operator จะคัดลอกบิตไปยังผลลัพธ์หากมีอยู่ในตัวถูกดำเนินการทั้งสอง | (A & B) จะให้ 12 ซึ่งเท่ากับ 0000 1100 |
| (บิตหรือ) | ไบนารีหรือตัวดำเนินการจะคัดลอกบิตหากมีอยู่ในตัวถูกดำเนินการอย่างใดอย่างหนึ่ง | (A | B) จะให้ 61 ซึ่งก็คือ 0011 1101 |
^ (XOR แบบบิต) | ตัวดำเนินการ XOR ไบนารีจะคัดลอกบิตหากตั้งค่าไว้ในตัวถูกดำเนินการเดียว แต่ไม่ใช่ทั้งสองอย่าง | (A ^ B) จะให้ 49 ซึ่งก็คือ 0011 0001 |
~ (ชมเชยระดับบิต) | Binary Ones Complement Operator เป็นเอกภาพและมีผลของบิต 'พลิก' | (~ A) จะให้ -61 ซึ่งก็คือ 1100 0011 ในรูปแบบส่วนเติมเต็มของ 2 เนื่องจากเลขฐานสองที่ลงนาม |
<< (เลื่อนซ้าย) | ตัวดำเนินการกะซ้ายแบบไบนารี ค่าตัวถูกดำเนินการด้านซ้ายจะถูกย้ายไปทางซ้ายตามจำนวนบิตที่ระบุโดยตัวถูกดำเนินการด้านขวา | A << 2 จะให้ 240 ซึ่งก็คือ 1111 0000 |
>> (กะขวา) | ตัวดำเนินการกะไบนารีขวา ค่าตัวถูกดำเนินการด้านซ้ายจะถูกย้ายไปทางขวาตามจำนวนบิตที่ระบุโดยตัวถูกดำเนินการด้านขวา | A >> 2 จะให้ 15 ซึ่งก็คือ 1111 |
>>> (ศูนย์เติมกะขวา) | เลื่อนตัวดำเนินการเติมศูนย์ไปทางขวา ค่าตัวถูกดำเนินการด้านซ้ายจะถูกย้ายไปทางขวาตามจำนวนบิตที่ระบุโดยตัวถูกดำเนินการด้านขวาและค่าที่เลื่อนจะเต็มไปด้วยศูนย์ | A >>> 2 จะให้ 15 ซึ่งก็คือ 0000 1111 |
ตัวดำเนินการทางตรรกะ
ตารางต่อไปนี้แสดงรายการตัวดำเนินการทางตรรกะ -
สมมติว่าตัวแปรบูลีน A ถือเป็นจริงและตัวแปร B ถือเป็นเท็จจากนั้น -
แสดงตัวอย่าง
ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
---|---|---|
&& (ตรรกะและ) | เรียกว่าตัวดำเนินการ Logical AND ถ้าตัวถูกดำเนินการทั้งสองไม่ใช่ศูนย์เงื่อนไขจะกลายเป็นจริง | (A && B) เป็นเท็จ |
|| (ตรรกะหรือ) | เรียกว่า Logical OR Operator หากตัวถูกดำเนินการสองตัวใดตัวหนึ่งไม่เป็นศูนย์เงื่อนไขจะกลายเป็นจริง | (A || B) เป็นจริง |
! (ตรรกะไม่) | เรียกว่า Logical NOT Operator ใช้เพื่อย้อนกลับสถานะตรรกะของตัวถูกดำเนินการ หากเงื่อนไขเป็นจริงตัวดำเนินการ Logical NOT จะสร้างเท็จ | ! (A && B) เป็นเรื่องจริง |
ผู้ดำเนินการมอบหมาย
ต่อไปนี้เป็นตัวดำเนินการกำหนดที่รองรับโดยภาษา Java -
แสดงตัวอย่าง
ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
---|---|---|
= | ตัวดำเนินการกำหนดง่าย กำหนดค่าจากตัวถูกดำเนินการด้านขวาไปยังตัวถูกดำเนินการด้านซ้าย | C = A + B จะกำหนดค่า A + B ให้เป็น C |
+ = | เพิ่มและกำหนดโอเปอเรเตอร์ เพิ่มตัวถูกดำเนินการด้านขวาให้กับตัวถูกดำเนินการด้านซ้ายและกำหนดผลลัพธ์ให้กับตัวถูกดำเนินการด้านซ้าย | C + = A เทียบเท่ากับ C = C + A |
- = | ตัวดำเนินการลบและกำหนด มันจะลบตัวถูกดำเนินการด้านขวาออกจากตัวถูกดำเนินการด้านซ้ายและกำหนดผลลัพธ์ให้กับตัวถูกดำเนินการด้านซ้าย | C - = A เทียบเท่ากับ C = C - A |
* = | ตัวดำเนินการคูณและกำหนด มันจะคูณตัวถูกดำเนินการด้านขวากับตัวถูกดำเนินการด้านซ้ายและกำหนดผลลัพธ์ให้กับตัวถูกดำเนินการด้านซ้าย | C * = A เทียบเท่ากับ C = C * A |
/ = | หารและกำหนดตัวดำเนินการ มันแบ่งตัวถูกดำเนินการด้านซ้ายกับตัวถูกดำเนินการด้านขวาและกำหนดผลลัพธ์ให้กับตัวถูกดำเนินการด้านซ้าย | C / = A เทียบเท่ากับ C = C / A |
% = | โมดูลัสและตัวดำเนินการกำหนด ใช้โมดูลัสโดยใช้ตัวถูกดำเนินการสองตัวและกำหนดผลลัพธ์ให้กับตัวถูกดำเนินการด้านซ้าย | C% = A เทียบเท่ากับ C = C% A |
<< = | กะซ้ายและตัวดำเนินการกำหนด | C << = 2 เหมือนกับ C = C << 2 |
>> = | ตัวดำเนินการกะและกำหนดสิทธิ์ | C >> = 2 เหมือนกับ C = C >> 2 |
& = | ตัวดำเนินการกำหนด Bitwise AND | C & = 2 เหมือนกับ C = C & 2 |
^ = | บิตพิเศษ OR และตัวดำเนินการกำหนด | C ^ = 2 เหมือนกับ C = C ^ 2 |
| = | รวมบิตหรือและตัวดำเนินการกำหนด | C | = 2 เหมือนกับ C = C | 2 |
ตัวดำเนินการเบ็ดเตล็ด
มีตัวดำเนินการอื่น ๆ ที่รองรับโดยภาษา Java
ตัวดำเนินการตามเงื่อนไข (?:)
ตัวดำเนินการตามเงื่อนไขเรียกอีกอย่างว่า ternary operator. ตัวดำเนินการนี้ประกอบด้วยตัวถูกดำเนินการสามตัวและใช้เพื่อประเมินนิพจน์บูลีน เป้าหมายของตัวดำเนินการคือการตัดสินใจว่าควรกำหนดค่าใดให้กับตัวแปร ตัวดำเนินการเขียนเป็น -
variable x = (expression) ? value if true : value if false
ต่อไปนี้เป็นตัวอย่าง -
Example
public class Test {
public static void main(String args[]) {
int a, b;
a = 10;
b = (a == 1) ? 20: 30;
System.out.println( "Value of b is : " + b );
b = (a == 10) ? 20: 30;
System.out.println( "Value of b is : " + b );
}
}
สิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้ -
Output
Value of b is : 30
Value of b is : 20
อินสแตนซ์ของโอเปอเรเตอร์
ตัวดำเนินการนี้ใช้สำหรับตัวแปรอ้างอิงออบเจ็กต์เท่านั้น ตัวดำเนินการตรวจสอบว่าออบเจ็กต์เป็นประเภทเฉพาะ (ประเภทคลาสหรือประเภทอินเทอร์เฟซ) อินสแตนซ์ของโอเปอเรเตอร์เขียนเป็น -
( Object reference variable ) instanceof (class/interface type)
หากอ็อบเจ็กต์ที่อ้างถึงโดยตัวแปรทางด้านซ้ายของตัวดำเนินการผ่านการตรวจสอบ IS-A สำหรับประเภทคลาส / อินเทอร์เฟซทางด้านขวาผลลัพธ์จะเป็นจริง ต่อไปนี้เป็นตัวอย่าง -
Example
public class Test {
public static void main(String args[]) {
String name = "James";
// following will return true since name is type of String
boolean result = name instanceof String;
System.out.println( result );
}
}
สิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้ -
Output
true
ตัวดำเนินการนี้จะยังคงคืนค่าจริงหากวัตถุที่กำลังเปรียบเทียบเป็นงานที่เข้ากันได้กับประเภททางด้านขวา ต่อไปนี้เป็นอีกหนึ่งตัวอย่าง -
Example
class Vehicle {}
public class Car extends Vehicle {
public static void main(String args[]) {
Vehicle a = new Car();
boolean result = a instanceof Car;
System.out.println( result );
}
}
สิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้ -
Output
true
ลำดับความสำคัญของ Java Operators
ลำดับความสำคัญของตัวดำเนินการกำหนดการจัดกลุ่มคำศัพท์ในนิพจน์ สิ่งนี้มีผลต่อวิธีการประเมินนิพจน์ ตัวดำเนินการบางอย่างมีลำดับความสำคัญสูงกว่าผู้อื่น ตัวอย่างเช่นตัวดำเนินการคูณมีลำดับความสำคัญสูงกว่าตัวดำเนินการบวก -
ตัวอย่างเช่น x = 7 + 3 * 2; ที่นี่ x ถูกกำหนด 13 ไม่ใช่ 20 เนื่องจากตัวดำเนินการ * มีลำดับความสำคัญสูงกว่า + ดังนั้นก่อนอื่นจึงคูณด้วย 3 * 2 แล้วบวกเป็น 7
ที่นี่ตัวดำเนินการที่มีลำดับความสำคัญสูงสุดจะปรากฏที่ด้านบนสุดของตารางตัวดำเนินการที่มีค่าต่ำสุดจะปรากฏที่ด้านล่าง ภายในนิพจน์ตัวดำเนินการลำดับความสำคัญสูงกว่าจะได้รับการประเมินก่อน
ประเภท | ตัวดำเนินการ | ความสัมพันธ์ |
---|---|---|
Postfix | นิพจน์ ++ นิพจน์ - | จากซ้ายไปขวา |
ยูนารี | ++ นิพจน์ --- นิพจน์ + นิพจน์ - นิพจน์ ~! | จากขวาไปซ้าย |
หลายหลาก | * /% | จากซ้ายไปขวา |
สารเติมแต่ง | + - | จากซ้ายไปขวา |
กะ | << >> >>> | จากซ้ายไปขวา |
เชิงสัมพันธ์ | <> <=> = อินสแตนซ์ของ | จากซ้ายไปขวา |
ความเท่าเทียมกัน | ==! = | จากซ้ายไปขวา |
Bitwise AND | & | จากซ้ายไปขวา |
Bitwise XOR | ^ | จากซ้ายไปขวา |
Bitwise หรือ | | | จากซ้ายไปขวา |
ตรรกะ AND | && | จากซ้ายไปขวา |
ตรรกะหรือ | || | จากซ้ายไปขวา |
เงื่อนไข | ?: | จากขวาไปซ้าย |
การมอบหมายงาน | = + = - = * = / =% = ^ = | = << = >> = >>> = | จากขวาไปซ้าย |
Next คืออะไร?
บทต่อไปจะอธิบายเกี่ยวกับการควบคุมลูปในการเขียนโปรแกรม Java บทนี้จะอธิบายประเภทต่างๆของลูปและวิธีที่สามารถใช้ลูปเหล่านี้ในการพัฒนาโปรแกรม Java และใช้เพื่อวัตถุประสงค์ใด