Posted on 2007-03-11 21:09
Fisher 閱讀(473)
評論(0) 編輯 收藏 所屬分類:
Java 學習筆記
String s1="abc"; // 這種形式的字符串,被保存在常量池中
String s2=new String("abc"); // 用new生成的字符串,保存在堆中
關于intern()方法,見下列說明:
When the intern method is invoked, if the pool already contains a string equal to this String object as determined by the equals(Object) method, then the string from the pool is returned. Otherwise, this String object is added to the pool and a reference to this String object is returned.
綜上,解決你的第三個問題:
String s1=new String("abc"); // s1指向的是堆中的地址
String s2=new String("abc").intern(); // s2指向的是常量池中的地址
System.out.println(s1==s2) ; // 地址根本就不同,自然s1==s2為false"
?
????????String?aaa?=?new?String("aaa");
????????String?aaa2?=?new?String("aaa").intern();
????????
????????System.out.println(aaa?==?aaa2);//false
????????System.out.println(aaa?==?"aaa");//false
????????System.out.println(aaa2?==?"aaa");//true