【问题标题】:Java string constant pool [duplicate]Java字符串常量池[重复]
【发布时间】:2016-06-27 10:46:30
【问题描述】:

在 Java 中,

String s1 =  new String("abc");
String s2 = new String("ab") + new String("cd");

字符串“abc”和“abcd”会在字符串常量池中创建吗?

【问题讨论】:

    标签: java string


    【解决方案1】:

    s1s2 都不会指向常量池中的字符串,因为您是通过显式构造函数调用和串联创建它们的。只有字符串文字“abc”、“ab”和“cd”会在常量池中。

    您需要明确地intern() 新实例。在这种情况下,s1 == "abc" 将变为 true。

    【讨论】:

    • s2.intern();字符串 s3 = "abcd";为什么 jdk1.7 中 s2 == s3 为真?
    • 在任何 JDK 中都应该是这样,因为 s2 和 s3 应该在常量池中看到相同的实例。
    • 非常感谢,终于明白了。
    猜你喜欢
    • 1970-01-01
    • 2011-07-24
    • 1970-01-01
    • 2014-09-14
    • 2014-06-08
    • 2012-12-18
    • 2013-06-08
    • 2013-05-17
    • 2015-06-21
    相关资源
    最近更新 更多