【问题标题】:Java Different between String s1 = "abc" and String s1 = new String("abc")? [duplicate]Java String s1 = "abc" 和 String s1 = new String("abc") 的区别? [复制]
【发布时间】:2013-10-20 13:10:32
【问题描述】:

我正在阅读一些关于如何在 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)

【问题讨论】:

    标签: java


    【解决方案1】:

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

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

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

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

    阅读更多:

    How can a string be initialized using " "?

    【讨论】:

    • 那么我可以在字符串文字上调用 equal 方法吗?
    • @TimothyLeung 是的,你可以。检查更新。创作方式变了。但这些也是字符串对象。
    猜你喜欢
    • 2019-11-29
    • 1970-01-01
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    • 1970-01-01
    • 2020-11-13
    相关资源
    最近更新 更多