Java 文本字符串方法与对象方法

Java 文本字符串方法与对象方法,java,string-literals,Java,String Literals,我看过这两个版本,所以我只是想知道,这两个表达之间有什么真正的区别吗?哪种是传统的写作方式 "hello".equals(myString) myString.equals("hello") 编辑:我问题的这一部分使其不再重复 为什么“hello.equals(myString)不会抛出错误?您不希望调用方负责使用空字符串吗?按照这种逻辑,使用myString.equals(“hello”)会不会强制执行更干净的代码?是的,第一个版本永远不会引发NullPointerException,如果

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

"hello".equals(myString)
 myString.equals("hello")
编辑:我问题的这一部分使其不再重复


为什么
“hello.equals(myString)
不会抛出错误?您不希望调用方负责使用空字符串吗?按照这种逻辑,使用
myString.equals(“hello”)
会不会强制执行更干净的代码?

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

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

最好的方法是第一种,因为它不能引发异常

如果
myString
null
,则第二种方法抛出
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”)
,但是意图更清楚,而且不可能有其他程序员出现,他们不知道为什么没有将文本放在第一位,并交换它。

最好的方法是第一种,因为它不会引发异常

如果
myString
null
,则第二种方法抛出
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”)
,但意图更为明确,不可能有其他程序员出现,他们不知道为什么没有将文字放在第一位,并将其交换。

……