앞선 글에서 String선언이냐 new String선언이냐에 따라 결과값이 달라지는 신기한 경험을 하였다.

 

==일 때는 pass이고 equals일 때는 fail인 것을 보니 그렇다면 주소값에 차이가 있지 않을까?

 

Debug를 한번 찍어보았다.

 

 

String으로 선언한 id와 idcheck, idcheck2의 변수는 주소값이 22로 같았다.

 

new String으로 선언한 idcheck3 와 idcheck4의 주소값은 28과 29로 서로 달랐다.

 

그렇다면 String과 new String의 차이는 

 

String으로 선언을 한다면 모두 같은 주소값을 가르키고

 

new String으로 선언을 한다면 선언할 때마다 다른 메모리(heap)이 생성된다는 것을 의미할 수 있겠다!

 

 

* 추가로 int의 경우에는 boolean, byte, char, short, int, long, float, double이 모든 데이터 타입들이 원시 데이터 타입이라고 해서 ==를 사용할 경우 String과 같이 주소값을 비교하는 것이 아니라 그 자체의 값만을 비교 한다고 한다.

 

+ Recent posts