Java

[Java] String = " " VS new String(" ")

디지몬진화 2024. 10. 7. 20:09

Java 문자열 입력 방식? 

큰따옴표(" ")안에 값을 입력하여 생성할 수도 있고, new 키워드로 새로운 객체를 생성할 수도 있다

 

먼저 두 방식을 소개하자면 이렇다.

 

1. 리터럴(literal) 표기방식

- 리터럴 표기방식 : 고정된 값을 그대로 대입하는 방법

String s1 = "Hello World";
String s2 = "Java Study"

 

 

2. new 키워드 사용

- new 키워드 : 새로운 String 객체를 만듦

String s1 = new String("Hello World");
String s2 = new String("Java Study");

 

두 가지 방식 중 더 효율적인 것을 무엇일까?

 

결론부터 말하자면 첫번째 방식이 리터럴 표기 방식을 사용하는 것이 좋다. 왜냐하면 리터럴 표기 방식이 가독성이 좋고 컴파일할 때 최적화에 도움을 주기 때문이다.

 

그렇다면 두 가지는 어떤 차이점을 가지고 있을까?

 

아래의 사진을 통해 두가지 방법으로 String 객체를 생성했을 때 JVM 메모리상에 어떻게 존재하는지 보자

▲ "Hello" 라는 두 개의 변수를 지정했지만 JVM Heap 메모리의 String Pool에는 “Hello”라는 문자열 하나만 존재하는 것을 볼 수 있다.

 

▲ new 키워드를 사용한다면 JVM Heap에 새로운 객체를 생성하게 된다

 

 

쉽게 말해 리터럴 방식은 동일한 리터럴을 사용할 경우 새로운 String 객체를 만들지 않고 기존에 만든 것을 재활용한다.

반면 new 키워드를 사용하는 방식은 매번 새로운 객체를 생성하므로 메모리 사용이 비효율적이다.

 

최종 정리

문자열을 생성할 때는 리터럴 방식을 사용하는 것이 메모리 효율성 측면에서 더 좋다. 정말로 새로운 String 객체가 필요할 때가 아니라면 리터럴 표기 방식을 권장한다.

 


참고 : https://tomining.tistory.com/195