【问题标题】:Unexpected Boolean Result意外的布尔结果
【发布时间】:2013-06-03 12:43:40
【问题描述】:

我有以下 Java 代码:

String p = "seven";
String q = "teen";
p + q == "seventeen";

为什么最后一行返回false 而不是true

【问题讨论】:

标签: java


【解决方案1】:

因为您应该使用equals 方法进行String 比较。 == 运算符比较对象引用,每个对象的引用都是唯一的。将对象与自身进行比较时,您只会得到 true 用于 == 比较。

试试(p + q).equals("seventeen");

注意,Java 中的Stringcomparison 区分大小写,因此您可能还想看看equalsIgnoreCase 方法。

【讨论】:

    【解决方案2】:

    (p + q).intern() == “十七岁”

    intern 将从池中返回字符串

    【讨论】:

      【解决方案3】:

      比较Strings时,必须使用String方法equalsequalsIgnoreCase,否则是在比较对象。由于p + q"seventeen" 是不同的对象,因此您的结果将是错误的。

      【讨论】:

        【解决方案4】:

        因为 == 是引用相等而不是逻辑相等。字符串是不可变的,因此您将获得新的字符串,它不会在内存中的相同位置。试试:

        String p = "seven";
        String q = "teen";
        (p + q).equals("seventeen");
        

        【讨论】:

          猜你喜欢
          • 2014-10-14
          • 2011-09-18
          • 2021-12-03
          • 2021-09-08
          • 1970-01-01
          • 2015-06-17
          • 2017-03-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多