자바에서 문자열은 플라이웨이트 패턴이 적용돼서 하나의 문자열 인스턴스를 생성하면 그 인스턴스는 스트링 풀에 저장되고 String 참조변수가 그 인스턴스를 참조하는 방식이기 때문에 같은 문자열을 담은 두 개 이상의 String 객체를 생성하면 동일한 인스턴스를 참조하는 걸로 알고 있는데요
그렇다면 예컨대 String str = "Hello, World!"와 같이 객체를 생성하고 str =="Hello, World!" 이렇게 비교연산을 하면 true가 나와야 하는 거 아닌가요? 근데 왜 이렇게 하면 false가 나오고 str.equals("Hello, World!") 이렇게 해야만 true가 나오는 건가요? "Hello, World!"라는 문자열 인스턴스가 메모리에 할당됐으며 "Hello, World!"를 담은 String 객체는 메모리에 할당된 이 "Hello, World!" 문자열을 똑같이 가리키기 때문에 객체 사이에 인스턴스만 비교해도 true가 나와야 하는 거 아닌가요?
- dc official App
==는 주소
플라잉웨이트 패턴이 적용됐기 때문에 같은 주소를 참조하는 거 아닌가요? - dc App
intern 함수를 써봐
앗 네 감사요 - dc App