【问题标题】:Literal String methods versus Object methods [duplicate]文字字符串方法与对象方法[重复]
【发布时间】:2015-09-15 02:46:38
【问题描述】:

我看过这两个版本,所以我只是想知道,这两个表达式之间有什么真正的区别吗?传统的写法是什么?

"hello".equals(myString)
 myString.equals("hello")

编辑:我的这部分问题不会重复

为什么"hello".equals(myString) 不抛出错误是好事?您不希望调用者负责使用空字符串吗?按照这个逻辑,使用myString.equals("hello") 不会强制执行更简洁的代码吗?

【问题讨论】:

    标签: java string-literals


    【解决方案1】:

    是的,第一个版本永远不会引发NullPointerException,如果myStringnull,它将返回false。

    【讨论】:

      【解决方案2】:

      最好的方法是第一种,因为它不会抛出异常。

      如果myStringnull,则第二种方式抛出NullPointerException

      为什么 "hello".equals(myString) 不抛出错误是好事?你不希望调用者负责使用空字符串吗?

      您说得对,尽快检测到编程错误是一件好事,所以有时异常是一件好事。如果myString 不应该是null,我会明确地抛出异常,而不是依赖myString.equals("hello"); 抛出异常。例如

      public void someMethod(String myString) {
          if (myString == null)
              throw new NullPointerException();
          if ("hello".equals(myString))
              // do something
      }
      

      这段代码完全等同于使用if (myString.equals("hello")),但意图更清晰,不会有其他程序员出现,没有意识到你为什么不把文字放在第一位,然后交换它。

      猜你喜欢
      • 2012-10-19
      • 1970-01-01
      • 2013-04-13
      • 1970-01-01
      • 2019-07-14
      • 2016-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多