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

원알렉스·2020년 7월 1일
0

Java

목록 보기
4/7
post-thumbnail

String 객체를 생성하는 방식

1) new 연산자를 이용하는 방식

  • String str = new String("hello");
  • Heap 영역에 메모리가 할당됩니다.
  • 같은 문자열이라도 다른 객체라서 선언한 만큼의 새로운 객체가 메모리에 할당됩니다.

2) 리터럴을 이용하는 방식

  • String str = "hello";
  • String을 리터럴로 선언하면 내부적으로 String의 intern() 메소드가 호출됩니다. intern() 메소드는 주어진 문자열이 String Constant Pool에 존재하는 검색합니다. 만약 있다면 그 주소값을 반환하고 없다면 여기에 새로 하나 만들고 그 주소값을 반환해줍니다.
public class Main {
  public static void main(String[] args) {
    String str1 = new String("hello");
    String str2 = "hello";
    String str3 = "hello";
    
    System.out.println(str1 == str2);  // false
    System.out.println(str2 == str3);  // true
  }
}
profile
Alex's Develog 🤔

0개의 댓글