java运算符
java运算符的优先级
小编访问各大博客,终于找到了一个口诀:单目乘除为关系,逻辑三目是赋值;当然最前面是()[]下来才是这个口诀,下来小编给大家解读这个口诀,以便大家都能变成java运算符的大侠。
单目:单目运算符+(正)-(负)++,–,!等
乘除:算术单目运算符(+,- * /,%)加减乘除
为:此为为位;就是位运算符(<<,>>)左移右移
关系:关系单目运算符,(<,>,<=,>=,!=)小于,大于,小于等于。大于等于等
逻辑:逻辑单目运算符(&,&&,|,||,^)
三目:三目单目运算符(A>B?A:B)
是:此处为了配和上半句没啥意思
赋值:赋值号=
我相信大家对于这个理解都是问题;
&与&&
相同点:都是逻辑运算符,都是两边为true的时候结果为true,其他为false;
不同点:
&:当他是逻辑运算符的时候,两边都要执行不管左边是不是false。
当他是位运算符的时候,可以进行数字按位运算比如5&4就是0101&0100结果就是0100=4;
&&:短路与,当左边的是false的时候右边不执行返回false
小编当初就是因为这个错了好多题,大家可要眼睛雪亮;
三目运算符
再来说说三目运算符
char x ='x';
int i=10;
System.out.println(true?x:i);
System.out.println(true?'x':10);
相信不少人一开始回写x,x;
当然小编一开始也是这种想法,但是这是错的,
三目运算符会根据运算符的精度类型进行相应的转换;第一个i是int类型,所以最后精度类型被提升为int类型,‘x’的ascii是120所以结果应该是120,
若三目运算符中的两个表达式有一个是常量表达式,另一个是类型T的表达式,且常量表达式可以被T表示,则输出结果是T类型,对于第二行输出,10是常量,所以输出应该是10;
%与/
System.out.println(-5%-3);
System.out.println(-5%3);
System.out.println(5%-3);
System.out.println(5%3);
System.out.println(-5/-3);
System.out.println(-5/3);
System.out.println(5/-3);
System.out.println(5/3);
结果-2
-2
2
2
1
-1
-1
1
可以见得两个数字相%余数的正负看第一个数字的正负,第一个数字是正就是正,第一个数字是负就是负
两个数字相/,结果和平时算法一样,一正一负结果为负,两正结果为正,两负结果为负。