-2

我想知道两个条件表达式 null == varvar == nullJava 的 if 语句之间的区别。

4

4 回答 4

8

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

第一个称为尤达风格

在编程术语中,Yoda 条件(也称为 Yoda 表示法)是一种编程风格,其中表达式的两个部分在条件语句中颠倒。


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

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

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

于 2013-09-23T10:06:41.003 回答
2

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

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

输出

null
no diff

这意味着没有区别

于 2013-09-23T10:06:47.203 回答
2

你也可以看看这个:

哪个更有效:if (null == variable) 还是 if (variable == null)?

于 2013-09-23T10:20:47.747 回答
0

不,没有。var当is时,这两个陈述都是正确的null

于 2013-09-23T10:05:45.200 回答