检查空-什么顺序?

在检查null时,我使用以下方法:


String str;


if(str == null){

    //...

}

但我也看到了这一点:


if(null == str){

    //...

}

使用一个相对于另一个有什么优势吗?还是只是为了提高可读性?


UYOU
浏览 413回答 3
3回答

汪汪一只猫

第二个版本(null == str)称为yoda条件。它们都导致相同的行为,但是第二个优点是:当您忘记一个变量时,它可以防止您意外地更改变量=。在这种情况下,编译器将在该行返回错误,并且您不会再遇到一些奇怪的代码行为和调试结果。

守着星空守着你

该null == x约定通常在熟悉C的人的代码中找到,其中赋值也可以是表达式。一些C程序员写代码像这样这样,如果他们错过了=在if (NULL == ptr)...由于NULL = ptr不是有效的分配,因此代码不会编译。尽管现代的C编译器使这种约定过时了,但是这可以防止在代码库中引入相当偷偷摸摸的错误,只要人们注意启用和读取生成的警告即可。这种编码风格在Java中从未有过任何用处,在Java中,引用分配不能用作布尔表达式。它甚至可以被认为违反直觉。大多数人会以自然语言说“如果X为null ...”或“如果X等于17 ...”,而不是“如果null等于X ...”。

桃花长相依

正如您所说的,可读性是最重要的原因。大声读出来,(null == str)读得不好。这几乎就像从右到左阅读。(str == null)读起来更好。另外,我认为需要考虑以下几点:if (str != null)  if (str == null)与if (null != str)if (null == str)我希望以相同的方式写出正数(str == null)和负数,这是我更喜欢顶集的另一个原因。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java