使用三目运算符,判断两个对象是否相等(包括null的情况)

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,后面就直接的跳过了。

你可能感兴趣的:(java)