最近经常看到有人问,我这个判断明明是true为啥不进if判断啊诸如此类的问题。其根本原因是没有掌握Java运算符的优先级。
现在我们一起来看下Java运算符的优先级
在判断的时候我们常用的是 && 和 || ,从上图我们可以看到 &&与的优先级是高于||的,而()是优先级最高的,下面看个例子:
int a = 2;
int b = 3;
int c = 2;
int d = 3;
boolean res = a == c || b == d && b == a;
输出结果:true
如果我们不知道运算符的优先级我们会想当然的从左往右运算,结果是false,但是进了if判断,百思不得其解。
int a = 2;
int b = 3;
int c = 2;
int d = 3;
boolean res = (a == c || b == d) && b == a;
输出结果:false
当我们加上括号之后,结果就是false了,因为小括号的优先级是最高的。
希望这篇文章能给同学们带来帮助,减少bug。^_^ ~