본문 바로가기
Java

String literal과 new

by BottleCoffin 2022. 6. 9.

String 문자열 생성 시 literal과 new 두가지 방식으로 가능하다.

String str = "Hello"; //literal
String str2 = new String("hello"); // new 객체 선언

 

 

둘다 JVM의 heap 영역에 저장되지만 literal은 heap 중에서 String Constant Pool에 저장된다고 한다.

String str = "hi";
String str2 = "hi";

System.out.println(str==str2); 

// String Constant Pool에 hi라는 객체가 생성되었기 때문에 str2는 새로 생성되지 않고 그 객체를 참조한다.
// 그래서 주소값을 비교했을 때 true가 나온다.

 

 

new 연산자를 사용하면 새로운 객체를 생성하기 때문에 일반적인 heap 영역에 만들어진다.

String str1 = "hi";
String str2 = new String("hi");
String str3 = new String("hi");

System.out.println(str1 == str2); //false

System.out.println(str2 == str3); //false

 

intern 메소드

객체를 상수풀에 추가하여 상수풀에 있는 값을 참조하게 할 수 있다고 한다.

'Java' 카테고리의 다른 글

예외처리  (0) 2022.05.30
객체지향 프로그래밍, JVM  (0) 2022.05.22
Java 파일 기본구조  (0) 2022.05.17
Package  (0) 2022.05.17
접근 제어자  (0) 2022.05.17

댓글