2025-05-23

Java代碼 
String s1 = “abc”; 


這個字符串s1被賦予瞭值“abc”,首先,查詢StringPool中有沒有“abc”這個值,如果不存在,那麼就將其存進去,如果已經存在,那麼就會被s1所調用。
Java代碼 
String s1 = “abc”; 
String s2 = “abc”; 


s1和s2所指向的對象是同一個,以下代碼能夠看出來:
Java代碼 
System.out.println(s1 == s2); 


會打印出“true”。
如果是下面這個:
Java代碼 
String s1 = “abc”; 
String s3 = new String(“abc”); 


之間的區別就是,s3在創建對象的時候,會檢查StringPool中是否存在“abc”,前面s1已經加進去瞭,所以s3不會在StringPool中創建瞭,會在堆中創建一個String對象,內容為“abc”,並返回給s3。


如果s1沒定義“abc”之前,s3也會先是在StringPool中創建“abc”,然後再在堆中創建一個String對象,所以s1和s3不是一個對象,用Object的equals方法就可以看出來。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *