Java에는 Boolean이라는 논리값을 나타내는 간단한 유형이 있습니다. 해당 값은 true 또는 false의 두 값 중 하나만 될 수 있습니다. 다음 프로그램은 부울 유형의 사용을 보여줍니다.
// 부울 값을 보여줍니다. class BoolTest { public static void main(String args[]) { boolean b; System.out.println("b is " + b); ("b is " + b); // 부울 값은 if 문을 제어할 수 있습니다. if(b) System.out.println("This is running.") b = false; System.out.println("이것은 실행되지 않습니다."); // 관계 연산자의 결과는 부울 값입니다. System.out.println("10 > 9는 " + (10 > 9));
이 프로그램을 실행한 결과는 다음과 같습니다.
b는 거짓 b는 참입니다. 10 > 9는 참입니다.
이 프로그램에는 3가지 흥미로운 점이 있습니다. 먼저, 부울 값을 출력하기 위해 println() 메소드를 사용할 때 "true" 또는 "false"가 표시된다는 것을 확인했습니다. 둘째, 부울 변수 자체의 값은 if 문을 제어하는 데 충분합니다. 다음과 같은 if 문을 작성할 필요가 없습니다.
if(b == true) ...
셋째, 관계 연산자(예: <)의 결과는 부울 값입니다. 이것이 10>9 표현식이 "true"를 표시하는 이유입니다. 또한 더하기 기호 "+" 연산자가 ">" 연산자보다 우선순위가 높기 때문에 식 10>9의 양쪽에 추가 괄호가 추가됩니다.
JAVA 부울 유형의 논리 연산과 비트 연산의 차이점
결과적으로 두 연산의 결과는 동일하지만 논리 연산은 '단락' 현상이 발생하는 반면 비트 연산은 그렇지 않으며 비트 연산은 논리 연산보다 'XOR' 기능이 더 많습니다.
단락 현상
class br { static boolean f1() { return false } static boolean f2() { return true } static boolean f3() { return true }} boolean f_1 = br.f1()&&br.f2()&&br.f3; ();
결과는 false입니다. f1()이 false이면 후속 && 작업을 수행하지 않고도 결과를 알 수 있으므로 JAVA는 후속 작업을 "단락"하여 성능을 향상시킵니다.
부울 f_2 = br.f2()||br.f1()||br.f3();
결과는 true입니다. 마찬가지로 f2()도 true이므로 추가 작업을 수행할 필요가 없습니다.
매우 편리하고 효율적인 것 같지만 여전히 단점이 있습니다.
부울 f_3 = br.f2()||br.f3()&&br.f1();
결과는 true가 되고 이는 false가 됩니다. 이는 "단락"으로 인해 발생한 오류입니다. 올바른 답을 얻으려면 괄호를 추가해야 합니다.
f_3=( br.f2()||br.f3())&&br.f1();
비트 연산은 논리가 제공하지 않는 XOR 기능을 제공합니다.
부울 f = 참^참;
결과 f = 거짓;