반응형
이번 강의에서는 자바에서 문자열을 비교할 때 사용하는 == 연산자와 .equals() 메서드의 차이를 예제를 통해 명확히 이해해봅니다.
자바에서 문자열은 객체이기 때문에, 단순히 ==으로 비교하면 "값"이 아니라 "주소(참조)"를 비교하게 됩니다.
문자열 내용이 같은지를 비교하고 싶다면 반드시 .equals()를 사용해야 합니다.
📌 예제 코드
public class EqualsExample {
public static void main(String[] args) {
String str1 = "홍길동", str2 = "홍길동";
System.out.println("str1과 str2는 참조가 " + (str1 == str2 ? "같다." : "다르다."));
if(str1.equals(str2))
System.out.println("str1과 str2는 문자열이 같다.");
String str3 = new String("홍길동"), str4 = new String("홍길동");
System.out.println("str3과 str4는 참조가 " + (str3 == str4 ? "같다." : "다르다."));
if(str3.equals(str4))
System.out.println("str3과 str4는 문자열이 같다.");
}
}
💬 코드 설명
- String str1 = "홍길동", str2 = "홍길동";
→ 문자열 리터럴은 String 상수 풀에 저장되므로 같은 객체를 참조 - str1 == str2
→ 참조(주소)가 같으므로 true - str1.equals(str2)
→ 문자열 내용 비교 → true - String str3 = new String("홍길동"), str4 = new String("홍길동");
→ new를 사용하면 항상 새로운 객체 생성
→ 참조는 다르지만 문자열 내용은 같음 - str3 == str4
→ 서로 다른 객체 → false - str3.equals(str4)
→ 문자열 내용은 같으므로 true
💻 실행 결과
str1과 str2는 참조가 같다.
str1과 str2는 문자열이 같다.
str3과 str4는 참조가 다르다.
str3과 str4는 문자열이 같다.
📌 간단 정리
비교 방식 | 비교 대상 | 결과 | 설명 |
== | str1 vs str2 | TRUE | 상수 풀의 같은 참조 |
.equals() | str1 vs str2 | TRUE | 내용 같음 |
== | str3 vs str4 | FALSE | 서로 다른 객체 |
.equals() | str3 vs str4 | TRUE | 내용 같음 |
💡 포인트 정리
- ==는 주소(참조) 비교 → 객체가 같은지 여부
- .equals()는 문자열의 내용(값) 비교
- 문자열 비교 시에는 반드시 .equals() 사용!
- new String("...")은 항상 새 객체를 생성하므로 주의
'프로그래밍 > JAVA' 카테고리의 다른 글
26. 문자열 바꾸기 - replace() 메서드 (0) | 2025.04.22 |
---|---|
25. 문자열 길이 검사 - length() 메서드 (0) | 2025.04.22 |
24. 빈 문자열 비교 - ""와 equals() (0) | 2025.04.21 |
22. 가비지 컬렉션과 참조 제거 (1) | 2025.04.21 |
21. break문 - 반복문 강제 종료하기 (0) | 2025.04.21 |
20. 배열의 비교 - 참조값 vs 값 (0) | 2025.04.21 |