java运算符之优先级

java运算符优先级

优先级记忆方法:
单目乘除为关系,逻辑三目后赋值。(前辈总结的)

各个字解释:
单目运算符:一次作用一个变量的运算符,又叫一元运算符
单目:单目运算符+ –(正负数) ,++ --,!(逻辑非),~(按位取反)
乘除:算数运算符:* / % + - (* / %优先级肯定是大于±的)
为:位运算符:~(按位取反)<<(左移) >>(右移),^(也可以位运算,二进制异或)
关系:关系运算符:> < >= <= == !=
逻辑:逻辑运算符(除!)&& || & | ^
三目:条件运算符A > B ? X : Y
后:无意义,仅仅为了凑字数
赋值:= += -= *= /= %= |= &= ^=

说明:前优先级大于后,比如单目运算符~ 也是位运算符,~的优先级是单目级别的。至于赋值运算符中没有见过的自行测试
java运算符之优先级

与或优先级
我在一段时间里认为与或的优先级一样,在一起使用也按照同级运算符是顺序执行的来认为的,实际上优先级是与大于或。

位运算与或
//位运算优先级大于位运算,顺序执行2|1&1结果为1,而正确答案是3
System.out.println(2|1&1);

逻辑与或
//逻辑的优先级要大于逻辑,顺序执行false ,而正确答案是ture
System.out.println(true||true&&false);

其实在实际的开发中,不需要去记忆运算符的优先级别,也不要刻意的使用运算符的优先级别,对于不清楚优先级的地方使用小括号去进行替代