Java中的这个“if”评估有三个同时expression式

我在我的Javatesting中有这个问题,我不得不为ab赋值,所以这个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作为对象引用,虽然它们当然保持相等的整数值。