5.4 비교 연산자 (Comparison Operators)
“누가 더 키가 큰가?”, “비밀번호가 일치하는가?” 처럼 두 값을 비교할 때 사용하는 연산자입니다.
결과는 무조건 참(true) 아니면 거짓(false)으로 나옵니다.
1. 크기 비교 (숫자) ⚖️
1) 개념
수학 시간에 배운 부등호를 그대로 사용합니다. (단, ≤, ≥ 기호는 없어서 <= 형태로 씁니다.)
| 연산자 | 설명 | 예시 (a=10, b=5) | 결과 |
|---|---|---|---|
> |
크다 (초과) | 10 > 5 |
true |
>= |
크거나 같다 (이상) | 10 >= 10 |
true |
< |
작다 (미만) | 10 < 5 |
false |
<= |
작거나 같다 (이하) | 10 <= 5 |
false |
2) 비유: “양팔 저울”
- 양쪽에 물건을 올렸을 때 어느 쪽으로 기울어지는지(True/False) 확인하는 것과 같습니다.

2. 등가 비교 (같니? 다르니?) 🤝
값이 같은지 다른지 확인할 때 사용합니다.
| 연산자 | 설명 | 예시 | 결과 |
|---|---|---|---|
== |
같다 | 10 == 10 |
true |
!= |
다르다 | 10 != 5 |
true |
주의: 수학에서는
=가 같다는 뜻이지만, 자바에서는=는 대입(저장)이고,==가 비교(같다)입니다.
3. 함정: 문자열(String) 비교 🚨
숫자는 ==로 비교하면 되지만, 문자열은 절대로 ==로 비교하면 안 됩니다!
1) 왜 안 되나요?
String은 참조 타입이라서 ==는 “내용이 같은가?”가 아니라 “같은 물건(주소)인가?”를 비교하기 때문입니다.
내용이 같아도 서로 다른 메모리 공간에 저장되어 있으면 false가 나올 수 있습니다.
2) 해결책: .equals()
문자열의 내용이 같은지 비교하려면 반드시 .equals() 기능을 써야 합니다.
String str1 = "Java";
String str2 = new String("Java"); // 내용은 같지만 주소가 다름
System.out.println(str1 == str2); // false (주소가 다름) ❌
System.out.println(str1.equals(str2)); // true (내용이 같음) ✅
3) 비교 방식 시각화
graph TD
subgraph Memory
Addr1[주소 100번지] --> Val1["Java"]
Addr2[주소 200번지] --> Val2["Java"]
end
Op1["== (주소 비교)"] -->|100번지 == 200번지?| Res1[false]
Op2[".equals() (내용 비교)"] -->|"Java" == "Java"?| Res2[true]
style Op1 fill:#fbb,stroke:#333
style Op2 fill:#bfb,stroke:#333
서브목차