"꽁탁" != new String("꽁탁");
new String()
new String()은 new 키워드로 새로운 객체를 생성하기 때문에 Heap 메모리에 새로운 주소를 할당받는다.
따라서, 모든 String 변수의 주소가 다르게 저장된다.
String a = "ABC"; //in String Constant Pool
String b = new String("ABC"); //in Heap
String c = new String("ABC"); //in Heap
System.out.println(a == b || a == c); // false
String 리터럴
문자열 리터럴은 Heap 내의 String Constant Pool이라는 영역에 할당된다.
만약, 이미 같은 값을 가지고 있는 리터럴이 Constant Pool에 존재한다면, 새로운 객체를 생성하지 않고 기존의 리터럴을 사용한다.
String a = "ABC"; //in String Constant Pool
String b = "ABC"; //in String Constant Pool
System.out.println(a == b); // true
'CS > Java' 카테고리의 다른 글
가비지 컬렉션 (0) | 2023.09.02 |
---|---|
로깅 시 System.out.println()을 사용하지 않는 이유 (0) | 2023.08.13 |
String, StringBuffer, StringBuilder (0) | 2023.08.12 |
equals()와 hashCode() (0) | 2023.08.11 |
Java 컴파일 과정 (0) | 2023.05.18 |