콘텐츠로 건너뛰기

String.intern() 의 사용법

# String.intern()

문자열을 생성하는 방법은 두 가지가 있다.

String a = “a”;    // literal
S
tring b = “a”;
String c = new String(“a”);    // constructor
String d = new String(“a”);

JVM 에서 리터럴로 문자를 생성할 경우, 같은 내용의 문자열은 하나의 스트링 인스턴스를 참조한다.

즉, b 가 생성될 때, 값들을 비교해서 a와 같으므로 a를 참조하도록 참조값을 가진다.

생성자 방식으로 생성한 문자열은 String pool 에 보관되지 않고 별도의 인스턴스를 생성한다.

그래서 a == b 를 하면, 같은 참조값을 가지므로 true가 나오고,

c == d 를 하면, 다른 참조값을 가지므로 false가 나온다.

생성자로 만든 문자열을 리터럴 형식의 문자열과 비교하는 방법은 두 가지가 있다.

a.equals(c);

a와 c의 문자열 값을 비교하므로 true가 된다.

a == c.intern();    // true

intern() 메소드는 해당 문자열이 String pool에 등록된 문자열인지 확인하여

그 문자열의 주소를 리턴한다.

그림 : http://blogfiles2.naver.net/data28/2007/11/30/289/javavm_xse01234.jpg

출처 : Head First Java, Effective Java, 인터넷

태그:

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다