【问题标题】:Different ways of comparing strings [duplicate]比较字符串的不同方法[重复]
【发布时间】:2016-12-15 03:11:56
【问题描述】:

我在 Github 上浏览代码,发现有人用这种方式比较两个字符串。

if ("whatever".equals(theString))

和普通的字符串比较方式有什么区别

if (theString.equals("whatever"))

上面的方法呢?

我不确定之前是否有人问过类似的问题,如果是,我深表歉意。

【问题讨论】:

  • theString.equals("whatever") 可以抛出 NullPointerException。 "whatever".equals(theString) 不能。
  • 感谢您的快速回复;)
  • Yoda notation 称之为。
  • @Jeremy 这个问题就像你能想出的任何问题一样,已经被问了数百次了。学习搜索信息。

标签: java string conditional-statements equals


【解决方案1】:

if("whatever".equals(theString)) 有一个优势,如果theStringnull,你就不会碰到NullPointerException。其余的都是一样的。

【讨论】:

    【解决方案2】:

    正如其他人已经指出的那样,Yoda 表示法用于避免可能的 NPE。但是,我真的不认为隐藏代码中的潜在错误是一种优势。

    使用

    "whatever".equals(theString)
    

    不会抛出 NPE,但您可能会认为一切都按预期工作。想想你未能初始化你的字符串的情况,它得到了null,你的代码不会中断并且条件将被评估为假。

    如果null表示什么,你应该检查并妥善处理:

    if (theString == null) {
        // log, initialize or whatever
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-22
      相关资源
      最近更新 更多