본문 바로가기

JAVA

논리연산자 | 21/11/04

package operator;

public class Ex6 {

public static void main(String[] args) {
/*
 * 논리연산자(&, &&, |, ||, !, ^)
 * - 두 피연산자간의 논리적인 판별을 수행하는 연산자
 * - 피연산자는 반드시 boolean 타입 데이터(true, false)만 사용 가능하며,
 *   결과값(= 리턴값)도 boolean 타입으로 리턴
 * - AND 연산자(&&)와 OR 연산자(||)는 Short Circuit Operation 과정이 일어나는데
 *   AND 연산의 경우 앞쪽의 피연산자가 false 이면 뒤의 값을 연산하지 않고 바로 false 를 리턴하며,
 *   OR 연산의 경우 앞쪽의 피연산자가 true 이면 뒤의 값을 연산하지 않고 바로 true 를 리턴하므로
 *   연산 속도가 빠르다!
 *   (만약, & 또는 | 연산자를 사용할 경우 앞의 피연산자와 관계없이 모든 값을 다 확인)
 * - 주로, 비교연산자 등과 결합하여 조건을 판단하는 용도로 사용
 *   ex) 나이가 5세 미만 '이거나' 65세 이상인 조건 판단
 *   ex2) 나이가 20세 이상 '이고' 29세 이하인 조건 판단
 *   
 * < AND 연산자(& 또는 &&) = 논리곱 >
 * - 두 피연산자가 모두 true 일 경우에만 결과값이 true 이고,
 *   하나라도 false 일 경우 결과값이 false
 * - 진리표 : F AND F = F, F AND T = F, T AND F = F, T AND T = T
 * - 어떤 조건에 대해 '~이고', '그리고' 등의 의미를 판별하는 용도로 사용
 * 
 * < OR 연산자(| 또는 ||) = 논리합 >
 * - 두 피연산자 중 하나라도 true 일 경우 결과값이 true 이고,
 *   둘 다 false 일 경우에만 결과값이 false
 * - 진리표 : F OR F = F, F OR T = T, T OR F = T, T OR T = T
 * - 어떤 조건에 대해 '~이거나', '또는' 등의 의미를 판별하는 용도로 사용
 * 
 * < NOT 연산자(!) = 논리부정 >
 * - 단항연산자이며, 피연산자 앞쪽(좌측)에 연산자를 붙여서 연산을 수행
 * - 현재 피연산자의 논리값을 반대로 반전시킴
 * - 진리표 : false -> true 로 바뀜, true -> false 로 바뀜
 * 
 * < XOR 연산자(^) = eXclusive OR = 배타적 논리합(OR) >
 * - 두 피연산자가 서로 다르면 true, 같으면 false 리턴
 * - 진리표 : F XOR F = F, F XOR T = T, T XOR F = T, T XOR T = F
 */

boolean a = false, b = true;

System.out.println("a(false) && a(false) = " + (a && a));
System.out.println("a(false) && b(true) = " + (a && b));
System.out.println("b(true) && a(false) = " + (b && a));
System.out.println("b(true) && b(true) = " + (b && b));

System.out.println("-----------------------");

System.out.println("a(false) || a(false) = " + (a || a));
System.out.println("a(false) || b(true) = " + (a || b));
System.out.println("b(true) || a(false) = " + (b || a));
System.out.println("b(true) || b(true) = " + (b || b));

System.out.println("-----------------------");

System.out.println("!a(false) = " + (!a));
System.out.println("!b(true) = " + (!b));

System.out.println("-----------------------");

System.out.println("a(false) ^ a(false) = " + (a ^ a));
System.out.println("a(false) ^ b(true) = " + (a ^ b));
System.out.println("b(true) ^ a(false) = " + (b ^ a));
System.out.println("b(true) ^ b(true) = " + (b ^ b));
}
}

논리연산자의 종류와 사용법 + 예시

출력 결과

a(false) && a(false) = false
a(false) && b(true) = false
b(true) && a(false) = false
b(true) && b(true) = true
-----------------------
a(false) || a(false) = false
a(false) || b(true) = true
b(true) || a(false) = true
b(true) || b(true) = true
-----------------------
!a(false) = true
!b(true) = false
-----------------------
a(false) ^ a(false) = false
a(false) ^ b(true) = true
b(true) ^ a(false) = true
b(true) ^ b(true) = false

 

다 괜찮은데 XOR(^) 연산자는 굳이(?) 쓸일이 있을까.....??