[JAVA 복습] 자바의 자료형과 연산자 - 불리언 자료형과 관련 연산자

seonjeong·2023년 10월 22일
0

Java

목록 보기
24/26
post-thumbnail

❤️ 불리언 자료형과 관련 연산자

boolean 자료형

  • 참/거짓 둘 중 한 값을 가짐
  • 1바이트(8비트) 공간 차지
    • 1비트가 아닌 이유 -> CPU가 수월히 다룰 수 있는 최소 단위가 1바이트이기 때문
  • 리터럴보다는 반환값으로 많이 사용

부정 연산자

  • ! : boolean 값을 반전
boolean bool1 = true;
boolean bool2 = false;

boolean bool3 = !true;  // false
boolean bool4 = !false;  // true

boolean bool5 = !!bool3;  // false
boolean bool6 = !!!bool3;  // true

💡 참고
IntelliJ에서 비교 연산자에 커서를 가져다 대면 단위별로 true , false 가 표시됨

논리 연산자

a && bANDa와 b가 모두 true일때만 true 반환
a || bORa와 b 중 하나만 true면 true 반환
int num = 4;

boolean isPositiveAndOdd = num >= 0 && num % 2 == 1;  // true && false = false
boolean isPositiveOrOdd = num >= 0 || num % 2 == 1;  // true || false = true

boolean isPositiveAndEven = num >= 0 && num % 2 == 0;  // true && true = true
boolean isPositiveOrEven = num >= 0 || num % 2 == 0;  // true || true = true

num = 6;

//  💡 &&가 ||보다 우선순위 높음
boolean boolA = (num % 3 == 0) && (num % 2 == 0) || (num > 0) && (num > 10); // true
boolean boolB = (num % 3 == 0) && ((num % 2 == 0) || (num > 0)) && (num > 10);  // false

단축평가 short circuit

  • && : 앞의 것이 false면 뒤의 것을 평가할 필요 없음
  • || : 앞의 것이 true면 뒤의 것을 평가할 필요 없음
  • 평가는 곧 실행 - 이 점을 이용한 간결한 코드
  • 연산 부하가 적은 코드를 앞에 - 리소스 절약
int a = 1, b = 2, c = 0, d = 0, e = 0, f = 0;

boolean bool1 = a < b && c++ < (d += 3);  // a<b가 true이므로 뒷부분도 평가
boolean bool2 = a < b || e++ < (f += 3);  // a<b가 true이므로 뒷부분은 평가❌

boolean bool3 = a > b && c++ < (d += 3); // a>b가 false이므로 뒷부분 평가❌ -> 디버깅 시, c=1, d=3
boolean bool4 = a > b || e++ < (f += 3); // a>b가 false이므로 뒷부분 평가 -> 디버깅 시, e=0, f=0
// 최종 결과 -> a=1, b=2, c=1, d=3, e=1, f=3

삼항 연산자

  • a ? b : c
    • a : 불리언 값
    • b : a가 true 일 때 반환될 값
    • c : a가 false 일 때 반환할 값
int num1 = 3, num2 = 4;

char num1OE = num1 % 2 == 1 ? '홀' : '짝';  // '홀'
char num2OE = num2 % 2 == 1 ? '홀' : '짝';  // '짝'
  • 삼항 연산자 내에 삼항 연산자 사용 가능
int num = 3;

boolean mult2 = true;

boolean plus5 = true;

System.out.println(
(!mult2 && !plus5) ? num
: (mult2 && plus5) ? num * 2 + 5
: mult2 ? num * 2
: num + 5
);  // 11
  • 단축평가 적용됨
int x = 1, y = 2;

int changed1 = x < y ? (x += 2) : (y += 2);  // x<y가 true이므로 true일 때 반환될 값만 연산
int changed2 = x < y ? (x += 2) : (y += 2);  // x=3 y=2
int changed3 = x < y ? (x += 2) : (y += 2);  // x=3 y=4 
int changed4 = x < y ? (x += 2) : (y += 2);  // x=5 y=4
int changed5 = x < y ? (x += 2) : (y += 2);  // x=5 y=6
// 최종 결과 -> x=7 y=6




출처 - 인프런 '제대로 파는 자바' 강의

profile
🦋개발 공부 기록🦋

0개의 댓글

관련 채용 정보