study/TIL🐥

String 객체 생성의 차이

서나쓰 2020. 12. 26. 11:23
728x90

기본적으로 String 객체 생성하는 방법 두 가지

public class StringExample {
	public static void main(String [] args) { 
		String name1 = new String("suna"); 
		String name2 = "suna"; 
		String name3 = "suna"; 
	} 
}

Java에서 String은 특별한 참조 자료형이다. 두 객체 생성 방법 모두 동일하게 객체 생성이 되지만, JVM이 관리하는 메모리 구조상에서 차이가 있다.

 

Java에서 String은 불변 클래스이고 참조 타입이기 때문에, 객체를 생성할 때 Heap 영역에 생성이 된다.

자바 안에는 String pool이란 게 있는데, 큰 따옴표(" ")로 생성하면 먼저 String pool에 같은 값이 있는지 확인하고, 있으면 그 주소를 리턴한다.

 

하지만, new로 생성하면 다른 객체들 처럼 Heap 영역에 생성하고 그 주소값을 리턴하게 된다.

 

new로 생성할 경우 같은 값이여도 계속 새로 생성이 되어 비효율적이다.

위의 그림처럼 s3의 값인 "Cat"으로 2번, 3번 생성할 경우 똑같은 값이 2, 3개 생겨나는 것이며, s1와 s2 처럼 생성할 경우, 같은 값인 경우에는 하나만 생성이 된다.

728x90

'study > TIL🐥' 카테고리의 다른 글

ORM/NoSQL  (0) 2020.12.27
DAO란?  (0) 2020.12.27
데이터웨어하우스(DW)란?  (0) 2020.12.27
인텔리제이의 장점  (0) 2020.12.26
DBMS 종류, 데이터 웨어 하우스  (0) 2020.12.26