String 생성 방식
- 리터럴을 이용한 방식
- string constant pool에 생성
- new 연산자를 이용한 방식
- heap 영역에 생성
String pool
- 리터럴을 이용해 생성하면 해당 String 값은 Heap 영역 내 String Constant Pool에 저장되어 재사용되지만, new 연산자를 이용해 생성하면 같은 내용이라도 여러 개의 객체가 각각 Heap 영역을 차지하게 된다.
- 그러므로 리터럴을 이용해 생성한 값이 같게 되면 서로 다른 변수더라도 같지만, new 연산자를 이용해 생성하면 같은 값이라도 서로 다른 주소를 가리키기 때문에 다르다.
- ex)
String str1 = "Str"
String str2 = "Str"
str1 == str2 //True
String str3 = new String("Str")
String str4 = new String("Str")
str3 == str4 //False