-
🎮 [JAVA 자바] #3 | 자바의 연산자, 연산자 우선순위CS/Java 2022. 4. 16. 20:41
🎮 연산자 우선순위
- 연산자 우선순위
모호하게 해석간으한 수식에서 어느 연산을 먼저 계산할 것인가를 결정하는 규칙.
같은 우선순위의 연산자는 왼쪽에서 오른쪽으로 처리, (대입연산자, --, ++, 양수 음수 부호, !, 형변환)은 오른쪽에서 왼쪽으로 처리.
괄호는 최우선 순위 : 가장 안쪽의 괄호부터 처리
단항연산자 > 산술연산자 > 관계연산자 > 비트연산자 > 논리연산자 > 대입연산자
* 단항 연산자 : ++, --, +(양의 부호), -(음의 부호), ~, !
* 비트 연산자 : &(AND), ^(XOR), |(OR)
- 그림으로 보기
- 1. 증감 연산자
전위 : b= ++a; -> a가 1 증가된 후에 값이 b에 들어간다. (증가 후의 값 반환)
후위 : b= a++; -> a의 값이 b에 들어간 후에 a가 1 증가한다. (증가 전의 값 반환)
- 2. 대입 연산자
(Ex. a = b, a += b, a /= b, a &= b, a <<= b, a >>>= b)
a += b는 a = a+b와 같다.
- 산술 연산자와 결합 규칙 예제
- 3. 관계 연산자
두 피연산자 비교하여 true 또는 false의 논리값을 내는 연산
(Ex. a<b, a==b, a<=b, a != b) -> 대입연산자랑 헷갈리지 말기
- 4. 논리 연산자
논리값으로 NOT, OR, AND, XOR 논리 연산. true or false 논리값을 내는 연산
(Ex. !a, a || b, a&&b, a ^b)
20 <= age < 30 // 오류! (age >= 20) && (age < 30) // 이렇게 사용하자
- 5. 조건 연산자 ? :
condition ? opr2 : opr 3 -> condition이 true면 op2, false이면 opr3
세 개의 피연산자로 구성된 삼항(ternary) 연산자
(ex. int s = (x>y) ? 123 : -123;)
- 6. 시프트 연산자
피 연산자의 비트들을 이동 연산
a >> b : a의 각 비트를 오른쪽으로 b번 시프트. 최상위 비트의 빈자리는 시프트 전의 최상위 비트로 채운다. 산술적 오른쪽 시프트
a >>> b : a의 각 비트를 오른쪽으로 b번 시프트. 최상위 비트의 빈자리는 항상 0으로 채운다. 논리적 오른쪽 시프트
a << b : a의 각 비트를 왼쪽으로 b번 시프트한다. 최하위 비트의 빈자리는 항상 0으로 채운다. 산술적 왼쪽 시프트
a에 4 나눔 : a >> 2
a에 4 곱함 : a << 2
a에 2 나눔 : a >> 1
a에 2 곱함 : a << 1
- 비트 논리 연산
피 연산자의 각 비트들의 논리 연산
a&b : 두 비트 모두 1이면 1, 그렇지 않으면 0
a^b : 두 비트가 다르면 1, 같으면 0
~ a : 1을 0으로. 0을 1로 변환
* System.out.printf("%x\n", ...)는 결과값을 16진수 형태로 출력 (ex. 00ff)
'CS > Java' 카테고리의 다른 글