str.equals(“”)和“” .equals(str)有什么区别?

时间:2018-06-26 09:07:52

标签: java

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

String str="";
System.out.println("".equals(str));
System.out.println(str.equals(""));

哪个有效?

2 个答案:

答案 0 :(得分:1)

第一个称为yoda condition,并避免出现空指针异常

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

两者都做完全相同的事情,并且每个人都可以理解。

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

答案 1 :(得分:1)

如果您传递的是空字符串,则没有区别,都返回true

但是写着:"".equals(str);

被认为比以下更安全:

str. equals("");-如果NullPointerExceptionstr,则第二个抛出null,在这种情况下,第一个简单地返回false并且您不这样做无需检查str是否为null