← 질문 목록
#316깊이 0
같은 문자열 리터럴이 같은 객체인 이유는?
리터럴은 풀에 한 벌만 두고 그 자리를 함께 가리키기 때문이다.
높은 주소낮은 주소
스택
변수는 자리만 가리킨다
힙위로 자랍니다
new로 만든 것은 여기 따로 생긴다
문자열 풀
리터럴은 여기 한 벌만 있고 함께 쓴다
String a = "cs"와 String b = "cs"는 같은 자리를 가리킨다. 그래서 a == b가 참이다.
new String("cs")는 다르다. 풀에 있든 없든 힙에 새로 하나를 만든다. 그래서 ==로 견주면 거짓이고 equals로 견줘야 참이다.
intern()을 부르면 풀에 같은 내용이 있는지 보고 있으면 그 자리를, 없으면 넣고 그 자리를 준다.
`==`는 내용이 아니라 참조를 견준다. 문자열이 특별해서가 아니라 참조 비교라서 그렇다.