Java str.equals(“str.equals”)之间有什么区别&引用&引用;。等于(str)?

Java str.equals(“str.equals”)之间有什么区别&引用&引用;。等于(str)?,java,Java,我知道它们都给出相同的结果 String str=""; System.out.println("".equals(str)); System.out.println(str.equals("")); 哪一个是有效的?调用第一个并避免空指针异常 如果定义了str,那么第二个可以正常工作,但是需要处理null条件 两者都做着完全相同的事情,每个人都能理解 但是有些程序员认为YODA是不好的做法,因为它降低了可读性。我还想补充一点,有时,您希望捕获空值,因此yoda表示法是无用的。调用第一个表示法

我知道它们都给出相同的结果

String str="";
System.out.println("".equals(str));
System.out.println(str.equals(""));
哪一个是有效的?

调用第一个并避免空指针异常

如果定义了str,那么第二个可以正常工作,但是需要处理null条件

两者都做着完全相同的事情,每个人都能理解

但是有些程序员认为YODA是不好的做法,因为它降低了可读性。我还想补充一点,有时,您希望捕获空值,因此yoda表示法是无用的。

调用第一个表示法,以避免空指针异常

如果定义了str,那么第二个可以正常工作,但是需要处理null条件

两者都做着完全相同的事情,每个人都能理解


但是有些程序员认为YODA是不好的做法,因为它降低了可读性。我还想补充一点,有时,您希望捕获空值,因此yoda表示法是无用的。

如果您传递了空字符串,则没有区别,两者都返回
true

但是写:
”.equals(str)

被认为比以下情况更安全:


str.等于(“”)
-如果
str
null
,第二个将抛出
NullPointerException
,当第一个在这种情况下返回
false
时,您不需要检查
str
是否为
null

,如果您传递了空字符串,则没有区别,两者都返回
true

但是写:
”.equals(str)

被认为比以下情况更安全:


str.等于(“”)
-如果
str
null
,则第二个会抛出
NullPointerException
,当第一个返回
false
时,您不需要检查
str
是否为
null

,区别在于如果
str
为null,则
等于(str)
将返回
false
,但
str.equals(“”
将抛出
NullPointerException
。效率方面没有差异。如果真有这样一个方法,那么它将是如此的微不足道,以至于你不必为此而烦恼。在equals方法之前使用字符串文本的全部目的是为了避免NullPointerException。这是一种预防性的方法。调用Yoda条件,其中,
Yoda条件将表达式的常量部分放置在条件语句的左侧。
在这里可以避免NullPointerException。两者都不是。使用str.isEmpty()。如果您想接受str为null且没有错误的情况,请使用str!=null&&str.isEmpty()区别在于,如果
str
为null,那么
.equals(str)
将返回
false
,但
str.equals(“”
将抛出
NullPointerException
。效率方面没有区别。如果真有这样一个方法,那么它将是如此的微不足道,以至于你不必为此而烦恼。在equals方法之前使用字符串文本的全部目的是为了避免NullPointerException。这是一种预防性的方法。调用Yoda条件,其中,
Yoda条件将表达式的常量部分放置在条件语句的左侧。
在这里可以避免NullPointerException。两者都不是。使用str.isEmpty()。如果您想接受str为null且没有错误的情况,请使用str!=null&&str.isEmpty()我敢打赌,虽然听尤达讲话很有趣,而且你确实可以通过付出额外的努力理解绝地大师讲话时说的话,当我试图成为一名专业人士并取得成就时,这样做很烦人。@kumesana我认为批评yoda的条件会使我的回答有点偏离观点,所以我保持中立,但我编辑了它,希望现在更好好的。我认为你的回答从一开始就很好,因为不可能一次谈论世界上的每一个问题。只是为那些可能有兴趣了解更多的人添加了一些内容。但正如你所愿。避免yoda条件并提高可读性的最佳实现是
str!=null&&str.equals(“”)
str!=null&&str.isEmpty()
我敢打赌,虽然听尤达讲话很有趣,而且你确实可以通过额外的努力理解绝地大师讲话时说的话,当我试图成为一名专业人士并取得成就时,这样做很烦人。@kumesana我认为批评yoda的条件会使我的回答有点偏离观点,所以我保持中立,但我编辑了它,希望现在更好好的。我认为你的回答从一开始就很好,因为不可能一次谈论世界上的每一个问题。只是为那些可能有兴趣了解更多的人添加了一些内容。但正如你所愿。避免yoda条件并提高可读性的最佳实现是
str!=null&&str.equals(“”)
str!=null&&str.isEmpty()