2013-10-12 34 views
0

我正在閱讀有關如何比較Java中String的等式的一些說明。不同的字符串s1 =「abc」和字符串s1 =新的字符串(「abc」)?

String s1 = new String("abc"); 
String s2 = new String("abc"); 

這兩個分配在不同的內存中,所以它們的引用是不同的。 當我們調用

if (s1 == s2){ .. } // Comparing the reference, so return false 
if(s1.equal(s2)){..} // Comparing content, so return true 

那麼,什麼是

String s3 = "abc" String s4 = "abc"

如何分配內存,當我做不同的平等檢查,會發生什麼?

例如:

s3==s4 
s3.equal(s4) 
s3.equal(s1) 
+0

爲什麼不嘗試? – YMomb

回答

1

字符串S3 = 「ABC」 字符串S4 = 「ABC」 ??

這些是文字。 String文字都存儲在一個公共池(字符串storage股)通過操作creted

String對象存儲在堆(不共享)。

s3==s4 //true 
s3.equals(s4) //true 

閱讀更多:

How can a string be initialized using " "?

+0

所以我可以調用字符串文字的平等方法? –

+0

@TimothyLeung是的,你可以。檢查更新。創作方式改變了。但是這些也是字符串對象。 –

相關問題