gpt4 book ai didi

java - 进行空检查的更好方法是什么?

转载 作者:行者123 更新时间:2023-12-02 12:50:07 24 4
gpt4 key购买 nike

我遇到了这两种对字符串对象进行空检查的方法。

给定一个字符串对象 String str = "example";

  1. If(str.someMethod() != null )
  2. If (null != str.someMethod())

为什么我们更喜欢第二个?这背后的确切原因是什么,与性能有关吗?

最佳答案

在你的例子中,你所做的一切(除了风格)绝对没有区别,因为 Yoda 检查的原因是为了避免意外地进行赋值(但请继续阅读为什么这在 Java 中并不重要),并且您不能分配给调用方法的结果。

Java 的优点之一是,即使您正在测试 str,例如:

if (str == null)

对比

if (null == str)

仍然没有区别,而在一些语法源自 B 的语言中(例如 C、C++、D、JavaScript 等),人们会执行第二种操作(a "尤达测试”)以最大限度地减少此错误的可能性:

if (str = null)          // Not an issue in Java

例如,在 C 或 JavaScript 中,会将 null 分配给 str,然后计算结果,将其强制为 boolean 值,然后不是分支。但在 Java 中,这是编译器告诉您的语法错误。

Java 不会执行这种 boolean 转换,因此在 Java 中使用 Yoda 检查的唯一原因是您要测试 boolean 值等

boolean flag;
// ...
if (flag == false)

那里,你可能会不小心这样做:

if (flag = false)

但是,由于将 ==!= 与 boolean 值一起使用是完全没有必要的(您只需使用 if (flag)if (!flag)),在现实世界中,您根本不需要使用 Java 进行 Yoda 检查。

这并不意味着人们不再使用它们,因为他们自己的个人风格。在 Java 中没有客观的理由。

关于java - 进行空检查的更好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33413179/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com