public static void main(String[] args) {
Object obj1 = null;
Object obj2 = null;
boolean e = ((obj1 == null) ? (obj2 == null) : (obj2 == null) ? false : obj1
.equals(obj2));
System.out.println(e);
}
很多的时候,我们就是认为这个程序输出的结果是false。但是很不幸得是计算的结果是true。
刚开始的时候,我们都习惯性的喜欢从左往右,一步一步地运算过去,到最后的结果是执行到
(obj1 == null) ? (obj2 == null) : (obj2 == null) ? false
然后后面的就不走了。所以就是false。
但是我想告诉你的是:这个程序是这样走的
(obj1 == null) ? (obj2 == null) : ((obj2 == null) ? false : obj1.equals(obj2));
后面的部分是个整体,如果前面的结果为true,后面就直接的跳过了。