1.3.1 算数运算符
在数学运算中最常见的就是加减乘除,被称作四则运算。Java中的算术运算符就是用来处理四则运算的符号,这是最简单、最常用的运算符号。接下来通过一张表来展示 Java中的算术运算符及其用法。
算术运算符看上去都比较简单,也很容易理解,但在实际使用时还有很多需要注意的问题,接下来就针对其中比较重要的几点进行详细讲解,具体如下。
1. 在进行自增(++)和自减(--)的运算时.如果运算符(++或--)放在操作数的前面则是先进行自增或自减运算,再进行其他运算。反之,如果运算符放在操作数的后面则是先进行其他运算再进行自增或自减运算。
请仔细阅读下面的代码块,思考运行的结果。
int a=1;
int b=2;
int c=a+b++;
Systen.out.print("b="+b);
Systen.out.print("c="+c);
上面的代码块运行结果为:b=3.c=3.具体分析如下:
在上述代码中,定义了三个int 类型的变量 a.b.c,其中a=1.b=2。当进行“a+b++”运算时,由于运算符++写在了变量 b 的后面.会先运算再自增,因此变量 b在参与加法运算时其值仍然为 2.c 的值应为 3.变量b在参与运算之后会进行自增,因此 b的最终值为 3。
2. 在进行除法运算时,当除数和被除数都为整数时,得到的结果也是一个整数。如果除法运算有小数参与,得到的结果会是一个小数。例如.2510/1000 属于整数之间相除,会忽略小数部分.得到的结果是 2。而 2.5/ 10 的结果为0.25。
请思考下面表达式的结果是多少。
3500/1000*1000
上面表达式的运行结果为 3000。由于表达式的执行顺序是从左到右.所以先执行除法运算 3500 1000.得到结果为 3.再乘以 1000,得到的结果自然就是 3000。
3. 在进行取模(%)运算时,运算结果的正负取决于被模数(%左边的数)的符号.与模数(%右边的数)的符号无关。例如,(一5)%3 的结果为一2。而 5%(一3)的结果为2。
1.3.2 赋值运算符
赋值运算符的作用就是将常量,变量或表达式的值赋给某一个变量。接下来通过一张表来展示 Java 中的赋值运算符及其用法,如下:
运算符 | 运算 | 范例 | 结果 |
= | 赋值 | a=3;b=2 | a=3;b=2 |
+= | 加等于 | a=3;b=2;a+=b | a=5;b=2 |
-= | 减等于 | a=3;b=2;a-=b | a=1;b=2 |
*= | 乘等于 | a=3;b=2;a*=b | a=6;b=2 |
/= | 除等于 | a=3;b=2;a/b | a=1;b=2 |
%= | 模等于 | a=3;b=2;a%=b | a=1;b=2 |
需注意以下两个问题:
1. 在java中可以通过一条赋值语句对多个变量进行赋值。如下:
int x,y,z;
x=y=z=5; //为三个变量同时赋值
注意下面这种写法在java中是不可以的:
int x=y=z=5; //这样写是错误的,因为没有预先声明变量y、z的数据类型
2. 在上表中除了=,其他的都是特殊的赋值运算符,以+=为例,x+=3就相当与x=x+3,首先会进行加法运算x+3,再将运算结果赋值给变量x。其余的-=,*=,/=,%=赋值运算符都可以以此类推。
1.3.3比较运算符
用于对两个常量或变量的大小进行比较,其结果为布尔值。
运算符 | 运算 | 范例 | 结果 |
== | 相等于 | 4==3 | false |
!= | 不等于 | 4!=3 | true |
< | 小于 | 4<3 | false |
> | 大于 | 4>3 | true |
<= | 小于等于 | 4<=3 | false |
>= | 大于等于 | 4>=3 | true |
注:不要把比较符误写成赋值运算符
1.3.4 逻辑运算符
运算符 | 运算 | 范例 | 结果 |
& | 与 | true&true | true |
true&false | false | ||
false&false | false | ||
false&true | false | ||
| | 或 | true|true | true |
true|false | true | ||
false|false | false | ||
false|true | true | ||
^ | 异或 | true^true | false |
true^false | true | ||
false^false | false | ||
false^true | true | ||
! | 非 | !true | false |
!false | true | ||
&& | 短路与 | true&&true | true |
true&&false | false | ||
false&&false | false | ||
false&&true | false | ||
|| | 短路或 | true||true | true |
true||false | true | ||
false||false | false | ||
false||true | true |
1.3.5 位运算符
运算符 | 运算 | 范例 | 结果 |
& | 按位与 | 0&0 | 0 |
0&1 | 0 | ||
1&1 | 1 | ||
1&0 | 0 | ||
| | 按位或 | 0|0 | 0 |
0|1 | 1 | ||
1|1 | 1 | ||
1|0 | 1 | ||
~ | 取反 | ~0 | 1 |
~1 | 0 | ||
^ | 按位异或 | 0^0 | 0 |
0^1 | 1 | ||
1^1 | 0 | ||
1^0 | 1 | ||
<< | 左移 | 00000010<<2 | 00001000 |
10010011<<2 | 01001100 | ||
>> | 右移 | 01100010>2 | 00011000 |
11100010>>2 | 11111000 | ||
>>> | 无符号位移 | 01100010>>>2 | 00011000 |
11100010>>>2 | 00111000 |
1.3.7 运算符的优先级
在对一些比较复杂的表达式进行运算时,要明确表达式中所有运算符参与运算的先后顺序,通常把这种顺序称作运算符的优先级。如下,其中数字越小优先级越高。
优先级 | 运算符 |
1 | . [ ] ( ) |
2 | ++ -- ~ ! |
3 | * / % |
4 | + - |
5 | << >> >>> |
6 | < > <= >= |
7 | == != |
8 | & |
9 | ^ |
10 | | |
11 | && |
12 | || |
13 | ?: |
14 | = *= /= %= += -= <<= >>= >>>= &= ^= |= |