object==null or null==object?

2022-08-31 09:46:45

我从某人那里听说比检查更好null == objectobject == null

例如:

void m1(Object obj ) {
   if(null == obj)  // Is this better than object == null ? Why ?
       return ;
   // Else blah blah
}

有什么原因,或者这是另一个神话?感谢您的帮助。


答案 1

这大概是从C中学到的一个习惯,以避免这种错别字(单打字而不是双打错字):===

if (object = null) {

将常量放在左侧的约定在 Java 中并不是很有用,因为 Java 要求表达式的计算结果为值,因此除非常量是 ,否则无论以何种方式放置参数,您都会收到编译错误。(如果它是一个布尔值,你无论如何都不应该使用...)==ifbooleanboolean==


答案 2

正如其他人所说,这是从C中学到的一种习惯,以避免拼写错误 - 尽管即使在C中,我也希望在足够高的警告级别上像样的编译器发出警告。正如Chandru所说,以这种方式在Java中与null进行比较只会在你使用类型变量(你不在示例代码中)时引起问题。我会说这是一种非常罕见的情况,不值得改变你在其他地方编写代码的方式。(即使在这种情况下,我也不会费心反转操作数;如果我想得足够清楚,可以考虑反转它们,我相信我可以数出等号。Boolean

没有提到的是,许多人(当然包括我自己)发现表格更具可读性 - 这是一种更自然的表达自己的方式。这是盲目地从C复制约定的原因。你应该总是质疑实践(就像你在这里所做的那样:)在假设在一个环境中可能有用的东西在另一个环境中有用之前。if (variable == constant)