2013-07-13 71 views
-5

我想這樣做的所有操作與String.Then我得到這個輸出如何System.out.println(s1 == s3.intern()); //返回true?

public class Stringtest { 

    public static void main(String[] args) { 
     String s1="abc"; 
     String s2="abc"; 
     String s3=new String("abc"); 
     String s4=new String("abc"); 
     System.out.println(s1.equals(s2)); 
     System.out.println(s1==s2); 
     System.out.println(s1==s3.intern()); 
     System.out.println(s3.equals(s4)); 
    } 
} 

爲:

System.out.println(s1==s3.intern()); //return true 

爲什麼結果返回true

+0

Chinmoy,嘗試閱讀String的文檔(從intern()'閱讀頂部和文檔:http://docs.oracle.com/javase/6/docs/api/java/lang/String.html – Augusto

回答

1

實習生使相同的不可變對象具有相同的參考以節省內存。當s3被攔截時,它被設置爲從池中指向s1(因爲它是一個文字,它被很容易地添加)。

由於它們具有相同的參考,==返回true。

+0

謝謝hexafraction – Chinmoy

+0

@Chinmoy請勾選此答案,如果它有幫助。 – hexafraction