# 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, 인터넷

2009/12/18 19:09 2009/12/18 19:09
Posted by freeism
TAG ,

트랙백 주소 :: http://www.freeism.co.kr/tc/trackback/640

댓글을 달아 주세요

이전페이지 1 ... 20 21 22 23 24 25 26 27 28 ... 179 다음페이지
사이드바 열기