이번 글은 헷갈리기 쉬운 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 메모리상에 어떻게 존재하는지에 대한 이해를 돕는 그림이다.
참고, 출처 블로그:
'개발일지 > Java & Springboot' 카테고리의 다른 글
[Java] split() 함수로 문자열 자르기 (0) | 2023.11.03 |
---|---|
[Spring] JPA란 ? (0) | 2023.10.29 |
[JAVA] 오버로딩 vs 오버라이딩 (0) | 2023.10.15 |
[Spring] 게시판 만들기 참고자료 (0) | 2023.10.09 |
[인프런 Spring] Spring 입문 강의 (1) | 2023.10.09 |