[JAVA] 02 연산자와 형 변환
이 글에서는 자바에서 사용하는 주요 연산자와 형 변환에 대해 정리한다. 연산자와 형 변환은 조건문, 반복문, 계산 로직 전반에 영향을 주며, 특히 오버플로와 자동 형 변환 규칙은 실무와 면접에서 자주 등장한다.
1. 연산자란
연산자는 변수나 값에 대해 계산, 비교, 논리 판단 등을 수행하는 기호다. 자바에서는 연산자의 종류와 우선순위가 명확하게 정의되어 있다. 연산 결과의 타입 또한 연산 규칙에 따라 결정된다.
2. 산술 연산자
int a = 10;
int b = 3;
System.out.println(a + b);
System.out.println(a - b);
System.out.println(a * b);
System.out.println(a / b);
System.out.println(a % b);
OUTPUT
13
7
30
3
1
정수 나눗셈의 결과는 소수점이 버려진 정수값이다.
System.out.println(10 / 3);
System.out.println(10 / 3.0);
OUTPUT
3
3.3333333333333335
연산 중 하나라도 실수 타입이면 자동 형 변환이 발생하여 결과는 실수형이 된다.
3. 증감 연산자
int x = 10;
x++;
System.out.println(x);
++x;
System.out.println(x);
OUTPUT
11
12
전위 / 후위 차이
int a = 5;
System.out.println(a++);
System.out.println(a);
int b = 5;
System.out.println(++b);
OUTPUT
5
6
6
후위는 사용 후 증가, 전위는 증가 후 사용한다. 이 차이는 반복문이나 조건문에서 매우 중요하다.
4. 비교 연산자
int a = 10;
int b = 20;
System.out.println(a == b);
System.out.println(a != b);
System.out.println(a > b);
System.out.println(a < b);
OUTPUT
false
true
false
true
비교 연산자의 결과는 항상 boolean 타입이다.
5. 논리 연산자
boolean a = true;
boolean b = false;
System.out.println(a && b);
System.out.println(a || b);
System.out.println(!a);
OUTPUT
false
true
false
단락 평가(short-circuit)
int n = 10;
if (n > 0 && n < 20) {
System.out.println("조건 만족");
}
논리 AND는 앞 조건이 false이면 뒤 조건을 검사하지 않는다. 이를 단락 평가라고 한다.
6. 대입 연산자와 내부 형 변환
int a = 10;
a += 5;
System.out.println(a);
OUTPUT
15
a += 5 는 내부적으로 (int)(a + 5) 와 동일하다. 대입 연산자는 자동 형 변환을 포함한다는 점이 중요하다.
7. 연산자 우선순위
int result1 = 10 + 2 * 3;
int result2 = (10 + 2) * 3;
System.out.println(result1);
System.out.println(result2);
OUTPUT
16
36
곱셈이 덧셈보다 우선순위가 높다. 가독성을 위해 괄호 사용을 권장한다.
8. 자동 형 변환
int a = 10;
double b = a;
System.out.println(b);
OUTPUT
10.0
작은 타입 → 큰 타입으로는 자동 변환된다. byte → short → int → long → float → double 순서다.
9. 강제 형 변환
double a = 10.7;
int b = (int)a;
System.out.println(b);
OUTPUT
10
소수점 이하 값은 버려진다. 이를 데이터 손실이라 한다.
10. 오버플로(Overflow)
int max = Integer.MAX_VALUE;
System.out.println(max);
System.out.println(max + 1);
OUTPUT
2147483647
-2147483648
범위를 초과하면 값이 순환한다. 에러가 발생하지 않는다는 점이 매우 중요하다.
11. 언더플로(Underflow)
int min = Integer.MIN_VALUE;
System.out.println(min);
System.out.println(min - 1);
OUTPUT
-2147483648
2147483647
언더플로 역시 값이 순환한다.
12. 연산 시 주의할 점 (심화)
- 정수끼리 나누면 결과도 정수다.
- 연산 중 자동 형 변환이 발생한다.
- 오버플로는 에러가 아니라 논리 오류다.
- 대입 연산자는 내부 캐스팅을 포함한다.
정리
- 연산자는 계산과 조건 판단의 핵심이다.
- 형 변환 규칙을 이해하지 못하면 의도하지 않은 결과가 나온다.
- 오버플로와 단락 평가는 반드시 이해해야 한다.
'Computer Science > Java' 카테고리의 다른 글
| [JAVA] 예외가 터지면 코드 흐름은 어떻게 될까 (0) | 2026.02.13 |
|---|---|
| [JAVA] 12 IO / 파일 처리 / 문자열 처리 (0) | 2026.02.13 |
| [JAVA] 11 예외 처리(Exception) (0) | 2026.02.13 |
| [JAVA] 09 인터페이스 / 추상 클래스 / 오버라이딩 / 오버로딩 (0) | 2026.02.13 |
| [JAVA] 01 변수와 자료형 (0) | 2026.02.01 |