[Java] String에서 리터럴(literal) vs new 키워드

우니·2023년 7월 23일
0

String에서 리터럴로 문자열을 선언하는것과 new 키워드로 선언하는것은 다릅니다.
리터럴은 String Constant Pool에 상수 형식으로 선언되지만 new는 새로운 객체가 Heap 메모리 객체에 선언되기 때문입니다.

String 리터럴은 이미 존재하는 문자열이 String Constant Pool에 존재할때, 새로운 객체를 생성하지 않고 기존에 존재하는 문자열을 참조합니다.
그렇기에 아래와 같은 결과가 나옵니다.

System.out.println(str1 == str3); //true

그러나 new로 선언한 String 객체는 객체를 생성할때마다 Heap 메모리에 새로운 주소를 할당 받습니다. 그렇기에 모든 String 객체의 주소가 다르게 저장됩니다.

String a = new String("Hello World!");
String b = new String("Hello World!");

System.out.println(a == b); //false

1개의 댓글

comment-user-thumbnail
2023년 7월 23일

정보 감사합니다.

답글 달기