면접 준비하면서 기초 공부 중인데, 두 문자열이 똑같은지 확인하는 코드를 짜고 있습니다. 변수에 들어있는 값이 분명히 같은데 결과가 이상하게 나와서 질문 올립니다.
코드:
public class Main {
public static void main(String[] args) {
String str1 = new String("Hello");
String str2 = new String("Hello");
if (str1 == str2) {
System.out.println("같습니다");
} else {
System.out.println("다릅니다");
}
}
}
오류: 다릅니다
시도: str1과 str2에 둘 다 "Hello"라고 똑같이 입력했고, 오타가 없는지 여러 번 확인했습니다.
질문: 화면에 출력해 보면 둘 다 Hello라고 나오는데 왜 == 연산자로 비교하면 다르다고 나오는지 알려주세요.
댓글6
-
빗방울
2026.10.30 14:01
-
빗방울
2026.10.30 14:47
ㄹㅇㅋㅋ 이거 모르고 짰다가 디버깅만 한 시간 한 기억나네요 ㄷㄷ
-
빗방울
2026.10.30 15:20
ㄹㅇㅋㅋ 리터럴로 선언하면 또 결과 다르게 나와서 더 헷갈림ㅋㅋ
-
빗방울
2026.10.30 16:01
맞음ㅋㅋ 힙 영역에 따로 생성되면 주소가 다를 수밖에 없음
이거 헷갈려서 고생 좀 했네요 ㄷㄷ
-
빗방울
2026.10.30 16:58
인정ㅋㅋ 저도 처음에 이거 때문에
멘탈 털렸던 기억나네요 ㄷㄷ
-
빗방울
2026.10.30 17:29
면접 준비하시는데 이거 걸리면 진짜 당황스럽긴 하겠네요ㅋㅋ
그냥 무조건 equals 쓴다고 외우는 게 속 편함ㄷㄷ
화이팅하세요ㅋㅋ
모든 이야기1478
가벼운 안부부터 깊은 생각까지, 함께 나눠요.
총 1478개의 이야기
이거 equals() 써야 됨ㅋㅋ
==는 주소값 비교하는 거라 그래요
자바 입문할 때 다들 한 번씩 겪는 킹받는 포인트인듯