【问题标题】:Comparing String with It's Reference by "==" [duplicate]通过“==”将字符串与其引用进行比较 [重复]
【发布时间】:2014-05-06 14:03:28
【问题描述】:

最近看到这样的代码——

class Test{
        public static void main(String[] args){

                String s1 = "String1"; //1
                String s2 = new String("String2"); //2

                System.out.println(s1.equals("String1"));
                System.out.println(s1=="String1"); //3

                System.out.println(s2.equals("String2")); 
                System.out.println(s2=="String2"); //4
        }
}

输出是 -

true
true
true
false

到目前为止,我知道,在第 1 点“String1”被放置在字符串池中并分配有字符串类型引用变量 s1。没有创建任何String对象吗?

我们知道在第 2 点创建了一个新的 String 对象,在第 4 点,表达式 (s2=="String2") 的计算结果为 false。如果在第 1 点创建了一个新的 String 对象,那么第 3 点的表达式 (s1=="String1") 如何评估为真。如果在第 1 点没有创建新对象,那么第 3 点 (s1=="String1") 的表达式如何计算为 true?

提前致谢

【问题讨论】:

  • 浏览副本。如果您还有其他问题,请务必指出确切的困惑所在。

标签: java string string-comparison


【解决方案1】:

==比较字符串的引用,不可靠用于值比较。我想你的 s1=="String1" 是真的,因为你正在比较两个文字,而 s2 比较一个新的 String 对象与一个文字。

【讨论】:

  • 这也是正确的。点赞
猜你喜欢
  • 1970-01-01
  • 2021-07-10
  • 1970-01-01
  • 2011-10-19
  • 2012-11-27
  • 1970-01-01
  • 2016-07-08
  • 2015-08-14
  • 1970-01-01
相关资源
最近更新 更多