字符串s1 =“abc”和字符串s1 =新字符串(“abc”)之间的Java不同?

时间:2013-10-12 14:35:35

标签: java

我正在阅读有关如何比较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)

1 个答案:

答案 0 :(得分:1)

  

String s3 =“abc”String s4 =“abc”??

这些是文字。 String文字存储在公共池中(字符串storage的份额)

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

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

阅读更多:

How can a string be initialized using " "?