🐰 String
클래스 타입으로, 참조 타입이기 때문에 기본 타입과는 달리 힙 영영에 생성된다.
String name = "홍길동";
- String 객체를 생성할 때 문자열 값인 "홍길동"은 String 객체로 생성되고, name 변수는 생성된 String 객체를 참조한다.
- name 변수 자체는 스택 영역에 저장되고, 문자열 "홍길동"은 힙 영역에 String 객체로 생성된다.
- name 변수에 "홍길동"이 담겨있는 String 객체의 주소 값이 저장된다.
문자열 리터럴
- 문자열 리터럴이 동일하다면 String 객체를 공유한다.
String name1 = "홍길동";
String name2 = "홍길동";
- name1과 name2는 같은 힙 영역의 String 객체를 가리키고 있다.
- 같은 곳을 가리키고 있기 때문에 저장된 주소 값도 동일하다.
new 연산자
- 힙 영역에 무조건 새로운 객체를 생성하게 된다.
String name3 = new String("홍길동");
String name4 = new String("홍길동");
- 새로운 객체를 생성하게 되므로 다른 곳을 가리키고 있기 때문에 같은 "홍길동" 값임에도 불구하고 주소 값이 다르다.
참고