Java中的这个“if”评估有三个同时expression式
我在我的Javatesting中有这个问题,我不得不为a和b赋值,所以这个expression式的计算结果为true:
(a<=b && b<=a && a!=b)
可悲的是,我不知道答案是什么。
这里有一个简单的窍门。
你不能只考虑布尔逻辑。 用这个,这个组合…
-
a小于或等于b, -
b小于或等于a,并且 -
a不等于b
…永远不会回报true 。
但是,如果操作数是对象,则!=运算符会比较引用。
所以,以下将返回true :
Integer a = 1; Integer b = new Integer(1); System.out.println(a<=b && b<=a && a!=b);
这里发生的事情是: a作为对象引用不等于b作为对象引用,虽然它们当然保持相等的整数值。