【问题标题】:Strange String comparation奇怪的字符串比较
【发布时间】:2011-09-18 09:18:22
【问题描述】:

我不知道为什么 CellType 与“Hamster”的比较是错误的。想知道为什么会这样!

它们完全相同,即使区分大小写。

请帮帮我。

【问题讨论】:

    标签: java android string comparator


    【解决方案1】:

    你需要使用

    if (CellType.equals("Hamster")) {
      ...
    }
    

    另一个比较检查它们是否是相同的字符串对象,而不是按值相同的字符串。

    这也是查找differences between reference equality and Object equality的好时机。

    【讨论】:

    • 感谢您的链接 :) 我现在明白了。等待 15 分钟接受。
    • 大声笑,平等的反击!
    • @David 是的,也许应该是语法错误。我是 .NET 开发人员,所以我不知道这个技巧 :(
    • 这不是语法错误,它是 Java 设计的核心租户。 == 运算符保留用于比较事物是否完全相等。换句话说,它只用于原始类型和检查两个引用是否指向同一个对象。由于能够创建具有相同“内容”的新对象,因此需要第二个相等运算符让对象通过内容进行比较。 .equals(...) 方法可以做到这一点,并且是多态的,允许对象在必要时覆盖它。 Java 不喜欢运算符重载,所以就是这样。
    【解决方案2】:

    == 是身份比较运算符(同一个对象)。当你想比较等价时,你应该使用equals()

    【讨论】:

      【解决方案3】:

      请使用

       CellType.equals("Hamster");
      

      如果要忽略大小写,请使用,

       CellType.equalsIgnoreCase("Hamster");
      

      【讨论】:

        【解决方案4】:
        CellType.equals("Hamster")
        or
        CellType.equalsIgnoreCase("Hamster")
        

        使用上述格式,会小心的

        【讨论】:

          猜你喜欢
          • 2011-04-07
          • 2011-05-06
          • 1970-01-01
          • 2014-10-22
          • 2019-10-26
          • 2011-09-13
          • 1970-01-01
          • 2021-09-07
          • 2012-02-24
          相关资源
          最近更新 更多