0

我正在阅读一些关于如何比较 Java 中 String 之间的相等性的注释。

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)
4

1 回答 1

2

字符串 s3 = "abc" 字符串 s4 = "abc"??

那些是字面意思。String文字存储在一个公共池中(storage字符串的份额)

通过new运算符创建的字符串对象存储在堆中(不共享)。

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

阅读更多:

如何使用“”初始化字符串?

于 2013-10-12T14:37:53.130 回答