Java String에 대해

작성자 : 조회수 :




public class StringClassTest {

    public static void main(String... args) {

        String literal = "test";

        String object = new String("test");

        System.out.println(literal == object);

        System.out.println(literal.equals(object));

    }

}


코드를 보면 둘의 차이점이 있다.

 

1.     리터럴 식으로 불러오기

2.     New 연산자를 이용한 방식

 

두 가지가 있습니다.

 

저는 보통 사용할 때 리터럴 방식으로 사용합니다.


new를 통해 String 객체를 불러오면 일반적인 메소드 저장소 Heap메모리에 담기게 됩니다.

 

하지만 리터럴 식으로 불러오면 String 내부 클래스에 intern() 메서드가 호출되었고

 

String constant pool이라는 영역에 넣었다고 합니다.



버전이 올라가면서는 String constant pool의 위치는 Heap으로 바뀌어 GC대상이 되어 좀더 안정적으로

 

바뀌었다고 할 수 있었습니다!



느낀 점: 최근 들어 웹 개발할 때 라이브러리나, 사용법에만 너무 집중해서 공부 했던 것 같습니다.

기본기가 늘 중요함을 알았지만 소홀히 했던 것 같습니다. 앞으로는 자바, 객체지향, 개발론 등 이론적이고 기본적인 부분도 빠짐 없이 공부하려합니다.

 

출처 : https://itkjspo56.tistory.com/285