출처 | https://splendidlolli.tistory.com/69
ㅇ문자열을 표현하는 자바에서 가장 많이 사용하는 클래스
ㅇString은 new연산자를 이용하지 않고도 인스턴스를 만들어 낼 수 있다!
ㄴ나머지 모든 클래스들은 new연산자를 이용해야지만 실제 인스턴스를 만들어낼 수 있다.
ㄴString은 기본 데이터타입 적어주는 것처럼 사용해도 기능이 된다! **특별한 클래스
ㄴ당연히 일반 클래스들처럼 new를 이용해서도 생성가능 String str = new String("hello");
String str1 = "hello"
String str2 = "hello"
String str3 = new String("hello");
String str4 = new String("hello");
이 hello라는 문자열은 메모리 중 상수들이 저장되는 영역에 저장된다.
첫번째 hello와 두번째 hello가 똑같으니 두개 만들어질 필요는 없다.
hello라는 인스턴스가 상수영역에 생성이 된다. 그리고 str1은 그 인스턴스를 가리키고,
str2도 hello를 가리키라고 하네? 그럼 일단 상수영역에 hello가 있는지 먼저 살펴본다. 있으면 새로 만들지 않고 hello를 가리킬 수 있다.
즉, str1과 str2는 같은 인스턴스를 참조하고(가리키고) 있다.
ㄴ메모리를 아끼려면 new를 사용하지 않는 것이 좋다.
new연산자로 인스턴스를 만들면, 무조건 상수영역에 있는걸 참조하지 않는다. 인스턴스는 무조건 새롭게 만들어진다.
따라서 str3과 str4는 서로 다른 인스턴스를 참조한다. (같은 래퍼런스가 아니다!)