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
作为对象引用,虽然它们当然保持相等的整数值。