728x90
종류 | 결합규칙 | 연산자 | 우선순위 |
단항연산자 | ← 왼오 | ++ -- + - ~ ! (type) | 높음 |
산술연산자 | → | * /(나누기) %(나머지) | |
→ | + - | ||
→ | << >> | ||
비교연산자 | → | < > <= >= instanceof | |
→ | == != | ||
논리연산자 | → | & | |
→ | ^ | ||
→ | | | ||
→ | && | ||
→ | || | ||
삼항연산자 | → | ?! | |
대입연산자 | ← 왼오 | = += -= *= /= %= <<= >>= &= ^= |= | 낮음 |
▶ 상단 표 정리
- 우선순위 : 산술 > 비교 > 논리 > 대입
- 우선순위 : 단항 > 이항 > 삼항
- 단항 연산자와 대입 연산자를 제외한 모든 연산의 진행방향은 왼쪽에서 오른쪽이다.
▶ 비트연산자
- | (OR) : 피연산자 중 한 쪽의 값이 1이면, 1을 결과로 얻는다. 그 외에는 0을 얻는다. 주로 특정 비트의 값을 변경할 떄 사용.
- & (AND) : 피연산자 양 쪽이 모두 1이어야만 1을 결과로 얻는다. 그 외에는 0을 얻는다. 주로 특정 비트의 값을 뽑아낼 때 사용.
- ^ (XOR(eXclusive OR) : 피연산자의 값이 서로 다른 경우, 즉 배타적인 경우에만 1을 결과로 얻는다. 같을 때는 0을 얻는다. 같은 값을 두고 XOR연산을 수행하면 원래의 값으로 돌아오는 특징이 있어서 간단한 암호화에 사용.
- ~ (비트 전환 연산자, 1의 보수 연산자) : 피연산자를 2진수로 표현했을 때, 0은 1로, 1은 0으로 바꾼다. 논리부정 연산자 '!'와 유사. 비트 전환 연산자 '~'에 의해 '비트 전환'되고 나면, 부호있는 타입의 피연산자는 부호가 반대로 변경된다. 즉, 피연산자의 '1의 보수'를 얻을 수 있는 것이다. 그래서 비트전환연산자를 '1의 보수' 연산자라고도 한다.
▶ 쉬프트 연산자 (124p)
→ (곱셈), /(나눗셈) 연산자를 사용하면 결과가 같은데 굳이 쉬프트 연산자를 사용하는 이유는? 속도 때문, 하지만 가독성이 안좋기 때문에 빠른 실행속도가 중요할 때만 사용
- << (왼쪽) : 피연산자의 각 자리(2진수로 표현했을 떄)를 왼쪽으로 이동(shift)한다. 산술변환이 적용되어 int보다 작은 타입은 int타입으로 자동 변환되고 연산결과 역시 int타입이 된다. x<<n은 x * 2^n의 결과와 같다.
- >> (오른쪽) : 피연산자의 각 자리(2진수로 표현했을 떄)를 오른쪽으로 이동(shift)한다. 다른 이항연산자들과 달리 피연산자의 타입을 일치시킬 필요가 없기 때문에 우측피연산자에는 산술변환이 적용되지 않는다. x>>n은 x / 2^n의 결과와 같다.
'공부 > Java' 카테고리의 다른 글
메서드 등 (0) | 2023.03.31 |
---|---|
문자 '2'에 -'0'을 했을 때 숫자2로 변환되는 이유 (0) | 2023.03.31 |
prinft(), 형변환 출력 (0) | 2023.03.27 |
오류 의미 (0) | 2023.03.07 |
이클립스 단축키 (0) | 2023.02.23 |