티스토리 뷰
[한빛미디어] 뇌를 자극하는 JAVA 프로그래밍 책으로 학습한 내용을 정리한 것입니다.
* 연산(Operation) : 정해진 규칙에 따라 데이터를 처리하여 결과를 산출하는 것
* 연산자(Operator) : 연산에 사용되는 표시나 기호
* 피연산자(Operand) : 연산자가 처리하는 데이터
* 식(Expression) : 연산자와 피연산자를 이용하여 연산의 과정을 기술한 것
[자바의 연산자들]
구분 | 연산자 | 기능 설명 |
사칙 연산자 | + - * / % | 사칙연산 및 나눗셈의 나머지 계산 |
부호 연산자 | + - | 음수와 양수의 부호 |
문자열 연결 연산자 | + | 두 문자열을 연결 |
단순 대입 연산자 | = | 우변의 값을 좌변의 변수에 대입 |
증가/감소 연산자 | ++ -- | 변수 값을 1만큼 증가/감소 |
수치 비교 연산자 | < > <= >= | 수치의 크기 비교 |
동등 연산자 | == != | 데이터의 동일 비교 |
논리 연산자 | & | ^ ! | 논리적 AND, OR, XOR, NOT 연산 |
조건 AND/OR 연산자 | && || | 최적화된 논리적 AND, OR 연산 |
조건 연산자 | ?: | 조건에 따라 두 값 중 하나 택일 |
비트 연산자 | & | ^ ~ | 비트 단위의 AND, OR, XOR, NOT 연산 |
쉬프트 연산자 | << >> >>> | 비트를 좌측/우측으로 밀어서 이동 |
복합 대입 연산자 | += -= *= /= %= &= |= ^= <<= >>= >>>= | + - * / % & | ^ << >> >>> 연산자와 =연산자의 기능을 함께 수행 |
캐스트 연산자 | (타입 이름) | 타입의 강제 변환 |
* 논리 연산자의 형식
- 피연산자1 & 피연산자2 -> 두 값 모두 true면 true, 그렇지 않으면 false
- 피연산자1 | 피연산자2 -> 두 값이 모두 false면 false, 그렇지 않으면 true
- 피연산자1 ^ 피연산자2 -> 하나가 true, 하나가 false라면 true, 그렇지 않으면 false
- !피연산자1 -> 피연산자1 값이 true면 false, false이면 true
(참고) 피연산자는 모두 boolean 타입
* 조건 연산자의 형식
- 피연산자1 && 피연산자2 -> 두 값 모두 true면 true, 그렇지 않으면 false
- 피연산자1 || 피연산자2 -> 두 값이 모두 false면 false, 그렇지 않으면 true
(참고) 피연산자는 모두 boolean 타입
* 논리 연산자와 조건 연산자의 작동 방법 차이점
ex. (5 > 6) & (7 < 8)
논리 연산자는 5 > 6 이 false여도 7 < 8 논리식도 연산함
조건 연산자는 5 > 6 이 false일 경우에 7 < 8 조건식을 연산하지 않음
따라서 작동 방식 차이로 인해 조건 연산자를 사용하는 것이 효율적임
* 비트 연산자
- 피연산자1 & 피연산자2 -> 이진법으로 바꾼 피연산자 값들을 두 데이터를 같은 위치 비트들을 AND 연산
- 피연산자1 | 피연산자2 -> 이진법으로 바꾼 피연산자 값들을 두 데이터를 같은 위치 비트들을 OR 연산
- 피연산자1 ^ 피연산자2 -> 이진법으로 바꾼 피연산자 값들을 두 데이터를 같은 위치 비트들을 XOR 연산
- ~피연산자1 -> 이진법으로 바꾼 피연산자 값들을 데이터의 각 비트들을 NOT 연산
* 비트 연산자 사용 시 주의할 점
1. 비트 연산자는 피연산자의 타입이 서로 다르면 넓은 범위를 표현하는 타입 쪽으로 자동 타입 변환
2. 피연산자가 모두 int타입보다 범위가 좁은 타입일 경우, 무조건 int타입으로 타입 변환
* 쉬프트 연산자
- 데이터 구성 비트를 오른쪽이나 왼쪽으로 밀어서 이동시키는 기능
- 정수 << 비트수 -> 정수를 구성하는 비트를 주어진 비트수만큼 왼쪽으로 이동하고 빈공간은 0으로 채움
- 정수 >> 비트수 -> 정수를 구성하는 비트를 주어진 비트수만큼 오른쪽으로 이동하고 빈공간은 최상위 부호 비트로 채움
- 정수 >>> 비트수 -> 정수를 구성하는 비트를 주어진 비트수만큼 오른쪽으로 이동하고 빈공간은 0으로 채움
* 쉬프트 연산자 쉽게 계산하는 방법
- 정수 << 비트수 = 정수 * 2^비트수
- 정수 >> 비트수 = 정수 / 2^비트수
* 쉬프트 연산자 사용 시 주의할 점
1. 쉬프트 연산자는 비트 연산의 대상이 되는 데이터 타입이 int타입보다 범위가 좁은 타입일 경우, 무조건 int타입으로 타입 변환
[연산자 우선 순위]
우선순위 | 연산자 | 처리순서 |
높음 ↑ 낮음 ↓ |
++ -- +(부호 연산자) -(부호 연산자) ~ ! 캐스트 연산자 | ← |
* / % | → | |
+ (덧셈 연산자, 문자열 연결 연산자) - (뺼셈 연산자) | → | |
<< >> >>> | → | |
< <= > >= | → | |
== != | → | |
& | → | |
^ | → | |
| | → | |
&& | → | |
|| | → | |
?: | ← | |
= += -= *= /= %= &= |= ^= <= >= >>= <<= | ← |
'개인공부 > Java' 카테고리의 다른 글
[Java] 데이터 타입 (0) | 2023.11.19 |
---|