2022. 5. 5. 23:52

TIL

어제 발견한 equals()와 hashCode() 오버라이드를 계기로 객체 비교에 대해 조금 알아보고 싶어서 공부해봤다. 간단하게 String 리터럴 선언과 객체 선언 비교 문제에 대한 글들을 읽어보았다.

 

'==' 연산자는 주소 값을 비교

String 값이 선언되면 같은 값들은 heap 영역 내 String Constant Pool 내의 같은 곳을 가리키게 된다. 그렇기 때문에 리터럴 선언 시 같은 값이면 '==' 연산자를 사용해도 동일하다. 반면에 new로 선언한 객체와 리터럴 선언의 String을 비교하거나 new로 선언한 String 객체 간을 같은지 비교하면 false가 출력된다.