8.자바의 연산자들(조건,비트 연산자)
조건연산자
- 삼항 연산자
- 조건식의 결과가 true(참)인 경우와 false(거짓)인 경우에 따라 다른 결과가 수행됨
- if(조건문)을 간단히 표현할 때 사용할 수 있음
연산자 | 기능 | 예 |
조건식 ? 결과1:결과2 | 조건식이 참이면 결과1, 조건식이 거짓이면 결과2가 선택됩니다. |
int num=(5>3) ? 10:20; |
예제)
public class CoditionTest {
public static void main(String[] args) {
int max;
System.out.println("두 수를 입력 받아서 더 큰 수를 출력\n");
Scanner scanner = new Scanner(System.in);
System.out.print("숫자1 : ");
int num1 = scanner.nextInt();
System.out.print("숫자2 : ");
int num2 = scanner.nextInt();
max = (num1>num2)? num1 : num2;
System.out.println(max);
비트연산자
- 대입연산자와 다른 연산자가 함께 쓰임
- 마스크 : 특정 비트를 가리고 몇 개의 비트 값만 사용할 때
- 비트켜기 : 특정 비트들만을 1로 설정해서 사용하고 싶을 때
예) &00001111( 하위 4비트 중 1인 비트만 꺼내기)
- 비트끄기 : 특정 비트들만을 0로 설정해서 사용하고 싶을 때
예) |11110000 (하위 4비트 중 0인 비트만 0으로 만들기)
- 비트토글 : 모든 비트들을 0은 1로, 1은 0으로 바꾸고 싶을 때
연산자 | 설명 | 예 |
~ | 비트의 반전(1의 보수) | a = ~a; |
& | 비트 단위 AND | 1 & 1 1반환 그 외는 0 |
| | 비트 단위 OR | 0|0 0반환 그 외는 1 |
^ | 비트 단위 XOR | 두 개의 비트가 서로 다른 경우에 1을 반환 |
<< | 왼쪽 shift | a<<2 변수 a를 2비트만큼 왼쪽으로 이동 |
>> | 오른쪽 shift | a>>2 변수 a를 2비트만큼 오른쪽으로 이동 |
>>> | 오른쪽 shift | >>동일한 연산 채워지는 비트가 부호와 상관 없이 0임 |
예제)
public class BitTest {
public static void main(String[] args) {
int num1 = 5; // 00000101
int num2 = 10; // 00001010
System.out.println(num1 | num2);
System.out.println(num1 & num2);
System.out.println(num1 ^ num2);
System.out.println(~num1);
System.out.println(num1 << 2);
System.out.println(num1);
System.out.println(num1 <<= 2);
System.out.println(num1);
}
}
연산자 우선순위
우선순위 | 형 | 연산자 | 방향 |
1 | 일차식 | () [] . | -> |
2 | 단항 | ! ++ -- + - | <- |
3 | 산술 | % / | -> |
4 | 산술 | + - | -> |
5 | 비트 이동 | << >> | -> |
6 | 관계 | <> <= >= | -> |
7 | 관계 | == != | -> |
8 | 비트 곱 | & | -> |
9 | 비트 차 | ^ | -> |
10 | 비트 합 | | | -> |
11 | 논리 곱 | && | -> |
12 | 논리 합 | || | -> |
13 | 조건 | ? : | -> |
14 | 대입 | = += -= *= %= /= | <- |