본문 바로가기
Development/JAVA & Spring

[Java] String =" " 와 new String(" ")의 차이

by 최호희 2023. 10. 27.

 

이번 글은 헷갈리기 쉬운 String =" " 와 new String(" ")의 차이에 대해 얘기해보려한다.

바로 시작해보겠다.

 


아래는 String =" " 와 new String(" ")를 사용한 코드이다. 이를 분석해보자

public class StringExample { 
  public static void main(String [] args) {
    String a = new String("Hello");
    String b = "Hello";
    String c = "Hello";
  } 
}

 a 는 heap 메모리에 개별 객체가 만들어지고, b 와 c 는String Constant Pool에 만들어진 하나의 객체를 참조한다. 따라서 총 2개의 String 객체가 생성된다. 

 

두 가지 방식 모두 String 객체를 생성한다는 사실은 같지만, JVM이 관리하는 메모리 구조상에서 명백히 다르다. 아래의 그림은 두가지 방법으로 String 객체를 생성했을 때, JVM 메모리상에 어떻게 존재하는지에 대한 이해를 돕는 그림이다.

 

 

 

참고, 출처 블로그: 

https://ict-nroo.tistory.com/18