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