반응형
참, 거짓으로 구분하는 연산자를 논리 연산자라고 한다.
- && : 모두 true여야만 true
- || : 한 개만 true여도 true
System.out.println(true&&true); // true
System.out.println(true&&false); // false
System.out.println(true||false); // true
System.out.println(false||false); // false
두 문자 쌍으로 나타내는 연산자 말고 한 개짜리도 있다.
비트로 전환해 연산하는 비트 논리 연산자 이다.
- & : 모두 true여야만 true
- | : 한 개만 true여도 true
이 두 연산자는 또 다른 차이점이 있다.
한 쪽만 실행하고 결과가 나오면 반환하느냐, 끝까지 실행해 보느냐의 차이이다.
- &&의 경우 왼쪽이 false면 그 뒤는 실행하지 않고 false로 반환한다.
- &의 경우 왼쪽이 false여도 그 뒤도 실행한 후 false로 반환한다.
- ||의 경우 왼쪽이 true면 그 뒤는 실행하지 않고 true로 반환한다.
- |의 경우 왼쪽이 true여도 그 뒤도 실행한 후 true로 반환한다.
int a = 7, b = 4;
System.out.println((a==b)&&(a>b++)); // false
System.out.println(b) // 앞이 false여서 뒤는 실행 안함 4
System.out.println((a==b)&(a>b++)); // false
System.out.println(b) // 앞이 false여도 뒤 실행 5
System.out.println((a!=b)||(a>b++)); //
System.out.println(b) // 앞이 true여서 뒤는 실행 안함 5
System.out.println((a!=b)|(a>b++));
System.out.println(b) // 앞이 true여도 뒤 실행 6
숫자끼리는 논리연산자를 사용할 수 없지만, 비트 논리연산자는 사용할 수 있다.
System.out.println(6&4); // 4
System.out.println(6|3); // 7
왜? 우선 비트화 시킨 후 실행하기 때문이다.
6 → 0110, 4 → 0100, 3 → 0011
6&4 둘 다 모두 1이면 1이 된다.
- 0110
- 0100
- ------
- 0100 > 결국 4가 출력
6|3 둘 중 하나라도 1이면 1이 된다.
- 0110
- 0011
- ------
- 0111 > 결국 7이 출력
반응형
'Dev > Java' 카테고리의 다른 글
[Java] ==와 equals() 차이 (0) | 2024.07.30 |
---|---|
[Java] 데이터 타입 (0) | 2024.07.28 |
[Java] JVM 구조 (0) | 2024.07.27 |
[Java] 자바 프로그램은 어떻게 실행될까? (0) | 2024.07.27 |
[Java] 프로그래밍은 언제부터 시작? (0) | 2024.07.27 |