Java 中的运算符
2.3.1 算数运算符
++ 自增(前) a=2;b=++a; a=3;b=3 ++ 自增(后) a=2;b=a++; a=3;b=2 -- 自减(前) a=2;b=--a; a=1;b=1; -- 自减(后) a=2;b=a--; a=1;b=2;
如果运算符++或–放在操作数的前面,则是先进性自增或自减运算,再进行其他运算。反之,如果运算符++或–放在操作数的后面,则是进行其他运算,再进行自增或自减运算。
int a=1;
int b=2;
int x=a+b++;
System.out.println("b="+b); //b=3
System.out.println("x="+x); //x=3
- 在进行除法运算时,当除数和被除数都为整数时,得到的结果也为整数。如果有小数参与,得到的结果会是一个小数。例如:2510/1000会忽略小数部分,得到的结果是2;2.5/10 = 0.25;3500/1000*1000 = 3000。
- 在进行取模(%)运算时,运算结果的正负取决于被模数(%左边的数)的符号,与右边(%)无关。如(-5)%3 = -2而5%(-3) = 2。
2.3.2 赋值运算符
运算顺序从右往左,将右边表达式的结果赋值给左边的变量。
- 使用赋值运算符进行赋值时,强制类型转换会自动完成:
short s = 3;
int i = 5;
s += i;
System.out.println(s); //输出等于8
Java虚拟机会自动完成类型转换,从而得到 s=8。
2.3.3 比较运算符
用于两个数值或变量进行比较,其结果为布尔型;
运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
== | 相等于 | 4 == 3 | false |
!= | 不等于 | 4!= 3 | true |
< | 小于 | 4<3 | false |
> | 大于 | 4>3 | true |
<= | 小于等于 | 4<=3 | false |
‘>= | 大于等于 | 4>=3 | true |
2.3.4 逻辑运算符
用于对布尔型的数据进行操作,结果为布尔型;
Java提供了两个在其它计算机语言中没有的逻辑运算符,这就是逻辑与和逻辑或的短路版本;
对于短路与(&&),如果其左侧为false,则不再计算其右侧,整个表达式的结果为false,只有左侧为true时才计算右侧;
对于短路或(||),如果其左侧为true,则不再计算其右侧,整个表达式的结果为true,只有左侧为false时,才计算右侧。
2.3.5 位运算符
是针对二进制数的每一位进行运算的符号,它是专门针对数字0和1进行操作的。
- 按位与&,如果两个二进制位都为1,则结果为1,否则为0;
- 按位或 |,如果两个二进制位有一个为1,则结果为1,否则为0;
- 反取 ~,如果两个二进制位都为0,则反取为1,否则为0;
- 按位异或^,如果两个二进制位相同,则结果为0,否则为1;
- 左移<<,运算时,右边的空位补0,左边移走的部分舍去;
- 右移>>,左边的空位根据原数的符号补位0或1(负1,正0)
- >>>,无符号右移
2.3.6 运算符的优先级
没有必要刻意去记运算符的优先级,编写程序时,尽量使用括号()来实现想要的运算顺序,以免产生歧义。