[DEV] J-Jay

논리형 TYPE/연산자 본문

Back-end/Java

논리형 TYPE/연산자

J-Jay 2023. 2. 15. 22:34
728x90
Boolean
  • 기본형 타입 중 논리형 타입은 boolean를 사용한다
  • 결과는 참(true) or 거짓(false)으로 나온다
  • 초기화하지 않으면 기본적으로 false 값을 가진다.
  • 1byte(8bit) 메모리를 사용한다
    1bit만으로도 참(1)과 거짓(0)을 표현할 수 있지만 컴퓨터가 자료를 표현하는 최소 단위가 1byte
public class Test {
    static boolean a;
    public static void main(String[] args){
        System.out.println(a); //false
    }
}

 

 

  • 메소드 안에서 변수를 선언한 후 초기화 하지 않고 사용하면 오류가 발생한다
public class Test {
    public static void main(String[] args){
        boolean a;
        System.out.println(a); // java:variable a might not have been initalized Error
    }
}

 

참(true)과 거짓(false)
  • 비교연산자와 논리연산자를 이용한 식의 결과는 참 or 거짓이 나온다
비교연산자 논리연산자
==, !=, <, >, <=, >= &&, ||, &, |, ^, !

 

비교연산자
  • 1은 2보다 작다 → 참? 거짓?
1 < 2

 

  • 위의 식을 변수에 저장하고 싶으면 아래처럼 표현하며  a의 결과는 true이다
booelan a = false;
a = 1<2; //true

 

논리연산자 &&, ||, &, |
  • a는 10보다 크고(and), 20보다 작다를 자바로 표현하면 아래와 같다
a > 10 && a < 20
  • a는 10보다 크거나(or), 20보다 작다를 자바로 표현하면 아래와 같다
a > 10 || a < 20
  • 2가지 조건을 모두 만족해야 하는 경우 &&(and)를 사용하고, 2가지 중 한 가지만 만족해도 될 경우 ||(or)를 사용한다.
  • &&대신에 &를 사용하거나, ||대신에 |를 사용해도 동일한 결과가 나온다.
    하지만 JVM에서는 실행을 다르게 한다
public class Test {
    public static void main(String[] args){
        boolean a =false;
        boolean b = false;
        boolean c = false;
        boolean d = false;

        a = 10 < 5 && 5 < 20; // 10 < 5는 false 이므로 5 < 20 확인 절차 없이 false를 반환
        b = 10 < 5 & 5 < 20;  // 10 < 5는 false 이지만 5 < 20 확인 후, false를 반환
        c = 10 > 5 || 5 < 20; // 10 > 5는 true 이므로 5 < 20 확인 절차 없이 true를 반환
        d = 10 > 5 | 5 < 20;  // 10 > 5는 true 이지만 5 < 20 확인 절차 후, true를 반환


        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println(d);

    }
}
논리연산자 ^(XOR)
  • 2개의 식의 논리 값이 서로 다를 경우 참(True) 값을 가진다
int a = 50;
a > 10 ^ a < 20 // a > 10:true / a < 20:false == true
논리연산자  !(부정 연산자)
  • 논리형 값을 부정한다
  •  true는 false로, false는 true로 바꾼다
boolean a = !(1<2); //false
정리
a b a&&b a&b a||b a|b a^b !a !b
true true true true true true false false false
true false false false true true true false true
false true false false true true true true false
false false false false false false false true true

'Back-end > Java' 카테고리의 다른 글

형 변환  (0) 2023.02.18
정수/실수/산술연산자  (0) 2023.02.16
변수/리터럴(literal)  (0) 2023.02.14
Java 컴파일  (0) 2023.02.12
Hello Java  (0) 2023.02.11