一、算术运算符
运算符 |
运算 |
范例 |
结果 |
+ |
正号 |
+3 |
3 |
- |
负号 |
b=4; -b |
-4 |
+ |
加 |
5+5 |
10 |
- |
减 |
6-4 |
2 |
* |
乘 |
3*4 |
12 |
/ |
除 |
5/5 |
1 |
% |
取模 |
5%5 |
0 |
++ ++ |
自增(前):先运算后取值 自增(后):先取值后运算 |
a=2;b=++a; a=2;b=a++; |
a=3;b=3 a=3;b=2 |
- - - - |
自减(前):先运算后取值 自减(后):先取值后运算 |
a=2;b=- -a a=2;b=a- - |
a=1;b=1 a=1;b=2 |
+ |
字符串相加 |
“He”+”llo” |
“Hello” |
注意:
1.如果对负数取模,可以把模数负号忽略不记,如:5%-2=1;但被模数是负数就另当别论,例如:-21%5=-1。
2.对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。 例如:
int x=3510;
x=x/1000*1000; //x的结果是3000
3.“+”除字符串相加功能外,还能把非字符串转换成 字符串.例如:
System.out.println("5+5="+5+5); //打印结果是5+5=55
三、赋值运算符
- 符号:=
- 作用:将数据、变量或对象赋值给相应类型的变量。例如:
int i = 75; //将数据赋值给变量 long l = i; //将变量赋值给变量 Object object = new Object(); //创建对象
- 扩展赋值运算符: +=, -=, *=, /=, %=
三、比较运算符
运算符 |
运算 |
范例 |
结果 |
== |
相等于 |
4==3 |
false |
!= |
不等于 |
4!=3 |
true |
< |
小于 |
4<3 |
false |
> |
大于 |
4>3 |
true |
<= |
小于等于 |
4<=3 |
false |
>= |
大于等于 |
4>=3 |
true |
instanceof |
检查是否是类的对象 |
“Hello” instanceof String |
true |
注意:
1.比较运算符的结果都是boolean型,也就是要么是true,要么是false。
2.比较运算符“==”不能误写成“=” 。
四、逻辑运算符
运算符 |
运算 |
范例 |
结果 |
& |
AND(与) |
false & true |
false |
| |
OR(或) |
false|true |
true |
^ |
XOR(异或) |
true^false |
true |
! |
Not(非) |
!true |
false |
&& |
AND(短路) |
false&&true |
false |
|| |
OR(短路) |
false||true |
true |
注意:
1.逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 && x<6 。
2.“&”和“&&”的区别:
单&时,左边无论真假,右边都进行运算;
双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
3.和“||”的区别同理,双或时,左边为真,右边不参与运算。
4.异或( ^ )与或( | )的不同之处是:对于 ^ 而言,当左右都为true时,结果为false。
五、位运算符
位运算符 |
||
运算符 |
运算 |
范例 |
<< |
左移 |
3 << 2 = 12 --> 3*2*2=12 |
>> |
右移 |
3 >> 1 = 1 --> 3/2=1 |
& |
按位与 |
6 & 3 = 2 |
| |
按位或 |
6 | 3 = 7 |
^ |
按位异或 |
6 ^ 3 = 5 |
~ |
按位取反 |
~9=6 |
位运算符的细节 |
|
<< |
被移除的高位丢弃,空缺位补0。 |
>> |
被移位的二进制最高位是0,右移后,空缺位补0; 最高位是1,空缺位补1。 |
& |
二进制位进行&运算,只有1&1时结果是1,否则是0; |
| |
二进制位进行 | 运算,只有0 | 0时结果是0,否则是1; |
^ |
相同二进制位进行 ^ 运算,结果是0;1^1=0 , 0^0=0 不相同二进制位 ^ 运算结果是1。1^0=1 , 0^1=1 |
~ |
二进制位进行~运算,0修改为1,1修改为0 |
注意:位运算是指直接对二进制位进行运算
六、三元运算符
格式:
(条件表达式)?表达式1:表达式2;
如果条件为true,运算后的结果是表达式1;
如果条件为false,运算后的结果是表达式2;
例如:
int store = 12;
System.out.println(store<=5?"库存不足!":"库存量:"+store); //输出结果为库存量:12
以上代码等价于如下的“if…else”语句:
int store = 12;
if (store<5){
System.out.println("库存不足!");
}else{
System.out.println("库存量:"+store);
}
注意:
三元运算符“?:”中的表达式1和表达式2,只有其中一个被执行。例如:
int x = 5,y = 7;
System.out.println(x>y?x++:y++); //输出结果为7
System.out.println("x="+x); //x的值为5
System.out.println("y="+y); //y的值为8
七、Java中运算符的优先级与结合方向
优先级 |
运算符 |
描述 |
结合性 |
1 |
.、[]、( ) |
域、数组、括号 |
从左至右 |
2 |
++ 、--、-、! |
一元运算符 |
从右至左 |
3 |
*、/、% |
乘、除、取余 |
从左至右 |
4 |
+ 、- |
加、减 |
从左至右 |
5 |
<< 、>> 、>>> |
位运算 |
从左至右 |
6 |
< 、<=、>、>= |
逻辑运算 |
从左至右 |
7 |
== 、!= |
逻辑运算 |
从左至右 |
8 |
& |
按位与 |
从左至右 |
9 |
^ |
按位异或 |
从左至右 |
10 |
| |
按位或 |
从左至右 |
11 |
&& |
逻辑与 |
从左至右 |
12 |
|| |
逻辑或 |
从左至右 |
13 |
?: |
条件运算 |
从右至左 |
14 |
=、*=、/=、%= 、+=、-=、<<=、>>=、>>>=、&=、^=、|= |
位运算 |
从右至左 |