의문점 공부하기/📌 Java

📌 String str ="i"와 String str = new String("i")가 동일 할까?

아리빠 2023. 6. 12. 17:21

String str = "i"와 String str = new String("i")는 동일하지 않다. 두 개의 선언 방식은 서로 다른 방식으로 문자열을 생성한다.

  • String str = "i"의 경우, 리터럴(literal) 표기법이 사용되며, "i"라는 문자열이 JVM의 intern pool이라는 메모리 공간에 저장된다. 이후 다시 "i"라는 문자열이 선언될 때는 이전에 저장된 문자열을 참조한다.

 

  • String str = new String("i")의 경우, 새로운 String 객체가 생성되며, "i"라는 문자열이 저장된다. 이때 intern pool에 저장된 문자열과는 다른 객체가 생성된다.

따라서 두 개의 선언 방식은 서로 다른 객체를 생성하므로 동일하지 않다.

++) 문자열을 비교할 때는 equals() 메소드를 사용해야 한다. == 연산자는 두 개의 문자열이 동일한 객체를 참조할 때만 true를 반환합니다.

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

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