Java中的三元表达式和逻辑运算符&&的一个小坑
今天在开发过程中遇到了一个小问题直接贴代码
if(
StrUtil.isNotBlank(testType) ? testType.equals(a.get(MEDIATYPETHREE)) : true &&
StrUtil.isNotBlank(difficulty) ? difficulty.equals(other.get("difficulty") : true) &&
StrUtil.isNotBlank(name) ? a.get(NAME).toString().contains(name) : true)
{
rows.add(a);
}
是判断一个搜索条件用的,一起搜索的时候要同时符合搜索条件。可能看这有点麻,我简化下。
System.out.println( 1==1 ? true : false && false);
简化后是这样,大家觉得输出结果是什么呢,我一开始一直以为是 && 前边是true,后边是false,结果应该是false,但是我错了,大错特错!
经过我验证,这个的结果是true。
结论:三元表达式配合&&使用,在不加括号的情况下,不管&&后边是什么,结果都只会是第一个三元表达式的结果。
如果想让输出false,用括号括起来就可以了。下边:
System.out.println( (1==1 ? true : false) && (false));
这样的话结果就是false了。
更底层的欢迎大佬留言讲解,原创转载请注明出处!