(null == var)和(var == null)之间有什么区别吗?



我想知道 Java 的 if 语句中两个条件表达式null == varvar == null之间的差异。

没有区别。只是风格问题。

第一个被称为尤达风格

在编程术语中,尤达条件

(也称为尤达符号(是一种编程风格,其中表达式的两个部分在条件语句中颠倒。


尽管条件表达式null == varvar == null都是等价的。但是假设如果你通过拼写错误==(检查相等性(作为=(赋值(引入错误,那么var = null不会给你错误并在代码中引入错误。而您编写null == var并假设拼写错误null = var则会产生编译时间错误。编译时错误比运行时错误更好。这是尤达条件形式的优点之一。

但我也建议你阅读对尤达延续的批评:

许多程序员讨厌它,因为它必须在精神上重新颠倒它才能理解它。(其他人显然没有这个问题(。这种做法被称为"尤达条件"。无论如何,大多数编译器都可以被说服警告条件下的赋值。

你也可以看看这个:

哪个更有效:if (null == 变量(

和 if (变量 == null(?

没有区别。例如,考虑以下代码段

String x = null;
if(x==null)
{
    System.out.println("null");
}
if(null==x)
{
    System.out.println("no diff");
}

输出

null
no diff

这意味着没有区别

不,没有。当var null时,这两种说法都是正确的。

最新更新