สอน Java ตอนที่ 7.5 Logical Operators

เขียนเงื่อนไขที่ซับซ้อนภายในคำสั่งควบคุม if, if ... else, while, do ... while, for ด้วย Logical Operators

Jul 02, 2016

แก้ไขล่าสุด มีผู้อ่าน 5,220  |  JAVA

Logical Operator คือ ตัวดำเนินการตรรกะ ถูกนำมาใช้กับตัวแปรประเภท Boolean หรือ ค่าของข้อมูล true หรือ false แล้วเอา Logical Operator มาทำอะไรในโปรแกรม ?

ก่อนหน้านี้ เราได้เรียนรู้การใช้ if, if ... else, whie, do ... while, for คำสั่งควบคุมเหล่านี้ต้องการเงื่อนไข (Condition) เพื่อกำหนดการทำงานของโปรแกรม ตัวอย่างเช่น count <= 10, number != age, total > 90  เงื่อนไขง่ายๆ เหล่านี้ใช้ Relational operators ( >, <, >=, <=) และ Equality operators (==, !=) เพียง 1 เงื่อนไข 

 

กรณีเงื่อนไขซับซ้อนมากขึ้น มีเงื่อนไขมากกว่า 1 ข้อ ตัวอย่างเช่น เราต้องการเขียนโปรแกรมนับจำนวนชายที่มีอายุมากกว่า 65 ปี โค้ดของเราจะออกมาเป็นหน้าตาแบบนี้ครับ

if(gender == "MALE") {
   if(age > 65) {
       ++seniorMales;
   }
}

เมื่อนำ Logical Operator มาใช้

if(gender == "MALE" && age > 65) {
   ++seniorMales;
}

อ่านว่า "ถ้าเป็นชายและมีอายุมากกว่า 65 ให้ทำการเพิ่มค่าในตัวแปร seniorMales อีก 1" 

 

สังเกตุว่า Logical Operators จะช่วยเชื่อมเงื่อนไข (Condition) ภายในคำสั่ง if ทำให้สามารถเขียนเงื่อนไขที่ซับซ้อนได้

Logical Operators แต่ละแบบทำงานอย่างไรบ้าง ?


 

แบบที่ 1 - && (Condition And Operator)

จะให้ค่าเป็นจริง (true) กรณีเดียวเมื่อ true && true กรณีอื่นจะให้ค่าเป็นเท็จ (false) ทั้งหมด ตามตารางด้านล่าง

expression1 expression2 expression1 && expression2
false false false
false true false
true false false
true true true

ตัวอย่าง

int number = 15;
if(number > 10 && number < 20) 
// expression1 : number > 10 = true
// expression2 : number < 20 = true
// expression1 && expression2 = true

 

แบบที่ 2 - || (Condition OR Operator)

จะให้ค่าเป็นเท็จ (false) กรณีเดียวเมื่อ false || false กรณีอื่นจะให้ค่าเป็นจริง (true) ทั้งหมด ตามตารางด้านล่าง

expression1 expression2 expression1 || expression2
false false false
false true true
true false true
true true true

ตัวอย่าง

char grade = 'A';
if(grade == 'B' || grade == 'A') 
// expression1 : grade == 'B' = false
// expression2 : grade == 'A' = true
// expression1 || expression2 = true

 

แบบที่ 3 & (Boolean Logical And)

จะเหมือนกับ && (Condition AND Operator) มีจุดที่แตกต่างกันคือเมื่อเป็น Boolean Logical operators จะไม่มีการทำ Short-circuit evaluation 

Short-circuit evaluation ของ && (Condition AND Operator) คือ จะไม่ตรวจสอบเงื่อนไขที่เหลือ ถ้าเจอเงื่อนไขหนึ่งเป็นเท็จ (false) แล้ว

 

แบบที่ 4 I (Boolean Logical Inclusive OR)

จะเหมือนกับ || (Condition OR Operator) มีจุดที่แตกต่างกันคือคือเมื่อเป็น Boolean Logical operators จะไม่มีการทำ Short-circuit evaluation 

Short-circuit evaluation ของ || (Condition OR Operator) คือ จะไม่ตรวจสอบเงื่อนไขที่เหลือ ถ้าเจอเงื่อนไขหนึ่งเป็นจริง (true) แล้ว


 

แบบที่ 5 ^ ( Boolean Logical Exclusive OR)

expression1 expression2 expression1 && expression2
false false false
false true true
true false true
true true false

 

แบบที่ 6 ! (Logical Negation Operator)

expression !expression
false true
true false

 

Logical Operator Example

 

Source Code

package com.olanlab.share.exam;

public class LogicalOperators {
	
   public static void main(String[] args) {
      System.out.println("Condition AND (&&)");
      System.out.println("false && false : " + (false && false));
      System.out.println("false && true : " + (false && true));
      System.out.println("true && false : " + (true && false));
      System.out.println("true && true : " + (true && true));
      System.out.println();
		
      System.out.println("Condition OR (||)");
      System.out.println("false || false : " + (false || false));
      System.out.println("false || true : " + (false || true));
      System.out.println("true || false : " + (true || false));
      System.out.println("true || true : " + (true || true));
      System.out.println();
		
      System.out.println("Boolean logical AND (&)");
      System.out.println("false & false : " + (false & false));
      System.out.println("false & true : " + (false & true));
      System.out.println("true & false : " + (true & false));
      System.out.println("true & true : " + (true & true));
      System.out.println();
		
      System.out.println("Boolean logical inclusive OR (|)");
      System.out.println("false | false : " + (false | false));
      System.out.println("false | true : " + (false | true));
      System.out.println("true | false : " + (true | false));
      System.out.println("true | true : " + (true | true));
      System.out.println();
		
      System.out.println("Boolean logical exclusive OR (^)");
      System.out.println("false ^ false : " + (false ^ false));
      System.out.println("false ^ true : " + (false ^ true));
      System.out.println("true ^ false : " + (true ^ false));
      System.out.println("true ^ true : " + (true ^ true));
      System.out.println();
		
      System.out.println("Logical NOT (!)");
      System.out.println("!false : " + !false);
      System.out.println("!true : " + !true);
      System.out.println();
   }
}

Output

Condition AND (&&)
false && false : false
false && true : false
true && false : false
true && true : true

Condition OR (||)
false || false : false
false || true : true
true || false : true
true || true : true

Boolean logical AND (&)
false & false : false
false & true : false
true & false : false
true & true : true

Boolean logical inclusive OR (|)
false | false : false
false | true : true
true | false : true
true | true : true

Boolean logical exclusive OR (^)
false ^ false : false
false ^ true : true
true ^ false : true
true ^ true : false

Logical NOT (!)
!false : true
!true : false

 


แบ่งปัน

ชอบ +1

บันทึก

ฝากคำถาม คำแนะนำ ได้ที่

Facebook : Share.OlanLab.Com
LINE ID : @olanlab
อีเมล์ : olan@olanlab.com

หลักสูตร

สอน Java สำหรับผู้เริ่มต้น

เรียนรู้การเขียนโปรแกรมโดยใช้ภาษา Java ตั้งแต่เริ่มต้นจนถึงขั้นสูงด้วยตัวเอง พร้อมแบบฝึกหัดและเทคนิคต่างๆ แบบ Step By Step
Share คลังความรู้ด้านเทคโนโลยี สารสนเทศ นวัตกรรมคอมพิวเตอร์ สอนเขียนโปรแกรม Php Java Html CSS Javascript C C++ Objective-C และอื่นๆ บนระบบปฏิบัติการ Window Linux Unix CentOS IOS Android
โดยผู้เขียนที่มีความเชี่ยวชาญเฉพาะ ให้บริการพื้นที่สำหรับนักเขียนที่ต้องการแบ่งปันความรู้ พร้อมให้คำปรึกษาแก่ผู้ที่สนใจ โดยไม่เสียค่าใช้จ่าย