| 연산자 종류 | 예제 | 설명 |
|---|---|---|
| 산술 연산자 | +, -, *, /, % | 기본적인 수학 연산 |
| 대입 연산자 | =, +=, -=, *=, /=, %= | 변수에 값 할당 |
| 증감 연산자 | ++, -- | 값 증가/감소 |
| 비교 연산자 | ==, !=, >, <, >=, <= | 값 비교 |
| 논리 연산자 | &&, ||, ! | 논리 연산 |
| 비트 연산자 | &, |, ^, ~, <<, >>, >>> | 비트 단위 연산 |
| 삼항 연산자 | ? : | 조건문 대체 |
| instanceof 연산자 | obj instanceof Class | 객체 타입 확인 |
자기 자신 반환, 할당(write) 두 가지 모두를 의미++i와 i++이 같음)j = ++i;
// 위와 아래 동일
++i;
j = i;j = i++;
// 위와 아래 동일
j = i;
i++;| 우선순위 | 연산자 | 설명 | 결합 방향 |
|---|---|---|---|
| 1 (높음) | (), [], . | 괄호, 배열 접근, 멤버 접근 | 왼 → 오 |
| 2 | ++, --, ~, !, (type) | 단항 연산자 (증감, 비트 반전, 논리 부정, 형변환) | 오 → 왼 |
| 3 | *, /, % | 곱셈, 나눗셈, 나머지 | 왼 → 오 |
| 4 | +, - | 덧셈, 뺄셈 (문자열 연결 포함) | 왼 → 오 |
| 5 | <<, >>, >>> | 비트 시프트 연산 | 왼 → 오 |
| 6 | <, <=, >, >=, instanceof | 비교 연산자 | 왼 → 오 |
| 7 | ==, != | 동등 비교 | 왼 → 오 |
| 8 | & | 비트 AND | 왼 → 오 |
| 9 | ^ | 비트 XOR | 왼 → 오 |
| 10 | ` | ` | 비트 OR |
| 11 | && | 논리 AND | 왼 → 오 |
| 12 | ` | ` | |
| 13 | ? : | 삼항 연산자 | 오 → 왼 |
| 14 | =, +=, -=, *=, /=, %=, &=, ` | =, ^=, <<=, >>=, >>>=` | 대입 연산자 |
| 15 (낮음) | , | 쉼표 연산자 | 왼 → 오 |
연산 수행 직전에 피연산자의 자동 형변환
// 1. 피연산자들 중 가장 큰 타입으로 일치
int i = 10;
float f = 20.0f;
float result = f + i; // i가 float으로 자동형변환
// 2. int 보다 작은 정수는 int 로 일치
byte b = 1;
int i = 10;
int result = b + i; // b가 int로 자동형변환
int a = 60 * 60 * 24 의 방식으로 표현하는 게 변경에 유리, 가독성 좋음 → 컴파일러가 컴파일 시 계산해주므로 성능 저하 없음0.1f 와 0.1d 는 같지 않음0.1f 는 0.100000004 로 0.1d 는 0.100000000...이므로 double 을 float 으로 변환하여 비교해야 함