我遇到了这两种对字符串对象进行空检查的方法.
给定一个字符串对象String str ="example";
If(str.someMethod() != null ) 要么If (null != str.someMethod())为什么我们更喜欢第二个?这背后的确切原因是什么,它与性能有关吗?
在你的例子中,它与你做的完全没有区别(除了样式),因为Yoda检查的原因是为了避免意外地进行任务(但是继续阅读为什么这在Java中无关紧要),你可以' t分配调用方法的结果.
关于Java的一个好处是,即使你正在测试str,例如:
if (str == null)
Run Code Online (Sandbox Code Playgroud)
与
if (null == str)
Run Code Online (Sandbox Code Playgroud)
将有仍然是没有区别的,而在一些语法语言从B(诸如C,C++,d,JavaScript等)衍生的,人们做第二个(一个"尤达测试")来的这个几率最小化BUG:
if (str = null) // Not an issue in Java
Run Code Online (Sandbox Code Playgroud)
例如,在C或JavaScript中,将分配 null给str,然后评估结果,将其强制转换为布尔值,而不是分支.但在Java中,这是编译器告诉你的语法错误.
Java没有做那种布尔转换,所以在Java中使用Yoda检查的唯一原因是你是在测试布尔值,ec
boolean flag;
// ...
if (flag == false)
Run Code Online (Sandbox Code Playgroud)
在那里,你可能会想到这是偶然的:
if (flag = false)
Run Code Online (Sandbox Code Playgroud)
但是因为使用==和!=使用布尔是完全没必要的(你只是使用if (flag)或if (!flag)),在现实世界中你根本不需要用Java进行Yoda检查.
这并不意味着人们仍然不会使用它们,这是他们个人风格的问题.在Java中,没有客观的理由.
| 归档时间: |
|
| 查看次数: |
129 次 |
| 最近记录: |