JAVA : 논리형 타입과 논리 연산자

<angeLog/>·2024년 3월 19일
0

JAVA

목록 보기
6/6
post-thumbnail

논리형 타입boolean

  • boolean은 true, false 2개의 값이 존재
  • 초기화(기본값 세팅)을 하지 않으면 기본적으로 false를 가짐
  • method안에서 선언된 지역변수의 경우 초기화 필수
  • class에서 선언된 변수는 field라고 지칭하며 초기화 불필요

boolean의 사용

  • 논리연산의 결과 저장할 때 사용

    논리연산?
    조건의 결과에 따라 true || false로 나뉘는 연산.
    a > 10 && a < 30이라는 조건이 있을 때 a가 5라면 해당 연산의 값은 true가 된다.

논리 연산자

  • & and : &&와 마찬가지로 and를 의미 : 두 조건 모두 충족
  • | or : ||와 마찬가지로 or를 의미 : 두 조건 중 하나만 충족
  • ^ 배타적 논리합 exclusive or(xor) : 주어진 2개의 명제 가운데 1개만 참일 경우를 판단
    예시 : a = 31 일때 a > 10 ^ a < 20이면 명제 중에 1개만 참이니 답은 true

&|&& ||와 다르게 동작할 수 있음
※ 비교 연산자, 논리 연산자와 함꼐 산술 연산자도 사용할 수 있음

예제1

System.out.println()를 사용해 논리형 값 출력하기.

public class BooleanType {
    public static void main(String[] args){
        // main method 안의 boolean 변수이므로 초깃값 할당
        boolean flag1 = false;
        boolean flag2 = false;
        boolean flag3 = false;
        boolean flag4 = false;
        boolean flag5 = false;

        flag1 = 10 > 5;
        flag2 = 10 < 5;
        flag3 = 10 >= 5;
        flag4 = 10 <= 5;
        flag5 = 10 == 5;

        System.out.println(flag1);	//예상true
        System.out.println(flag2);	//예상false
        System.out.println(flag3);	//예상true
        System.out.println(flag4);	//예상false
        System.out.println(flag5);	//예상false
    }
}

결과

예제2

System.out.println()를 사용해 논리연산자를 실행한 결과값 출력하기.

public class BooleanType2 {
    public static void main(String[] args){
        boolean flag1 = false;
        boolean flag2 = false;
        boolean flag3 = false;
        boolean flag4 = false;
        boolean flag5 = false;
        boolean flag6 = false;

        flag1 = 10 > 5 && 5 < 20;
        flag2 = 10 > 5 & 5 < 20;
        flag3 = 10 > 5 || 5 < 20;
        flag4 = 10 > 5 | 5 < 20;
        flag5 = 10 > 5 ^ 5 < 20;
        flag6 = !flag5;

        System.out.println(flag1); //예상true
        System.out.println(flag2); //예상true
        System.out.println(flag3); //예상true
        System.out.println(flag4); //예상true
        System.out.println(flag5); //예상false
        System.out.println(flag6); //예상true
        
    }
}

결과

&&, & 그리고 ||, |의 차이?

&&와 &의 차이

10 < 5 && 5 < 20의 명제가 있을 때

  • && : 앞의 식 10 < 5가 false라면 뒤의 식은 실행하지 않는다.
  • & : 앞의 식 10 < 5가 false여도 뒤의 식은 실행한다.

||와 |의 차이

10 < 5 || 5 < 20의 명제가 있을 때

  • || : 앞의 식 10 < 5가 false라면 뒤의 식은 실행하지 않는다.
  • | : 앞의 식 10 < 5가 false여도 뒤의 식은 실행한다.

예제

&&&, |||의 결과 확인해보기

public class BooleanType3 {
    public static void main(String[] args){
        int x = 1;
        int y = 2;

        if(x == 2 && ++y == 3){
            System.out.println("&&의 결과 : x="+ x + "y="+y ); //실행안함
        }

        if(x == 1 & ++y == 3){
            System.out.println("&의 결과 : x="+ x + "y="+y ); //실행
        }

        if(x == 2 || ++y == 2){
            System.out.println("||의 결과 : x="+ x + "y="+y ); //실행안함
        }

        if(x == 1 | ++y == 2){
            System.out.println("|의 결과 : x="+ x + "y="+y ); //실행
        }

    }
}

결과

boolean의 메모리

true, false는 1bit만으로도 충분히 표현이 가능하지만 컴퓨터에서 자료를 표현하는 최소의 메모리는 8bit = 1byte이므로 boolean형에서 소모되는 메모리는 1byte이다.

profile
일단 해볼게요!✍🏻

0개의 댓글