Java的平等运算符是可交换的吗?
请考虑以下
Java代码:
Integer foo = bar(); if(foo == 5) ...; if(5 == foo) ...; 这些比较是否相等 – 尤其是foo为空的可能性?它们是扩展为foo.getValue()== 5和5 == foo.getValue(),还是更类似于foo.equals(new Integer(5))和new Integer(5).equals(foo),还是别的什么? NPM中可能有一个或两个或两个都没有? 解决方法
从
JLS:
5.1.8的相关规则是:
5.6.2说:
这意味着if(foo == 5)…;表示与if(foo.intValue()== 5)…相同; if(5 == foo)表示if(5 == foo.intValue()).如果foo等于null,那么无论哪种情况都会得到一个NPE. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |