「7」运算符
1、表达式的概念
●程序是由许多语句组成的,语句的基本单位是表达式。
Z = ( X * 2 ) + ( 5 - Y )
表达式由操作数和运算符组成
●运算符主要分为以下几类
●算术运算符
●赋值运算符
●关系运算符
●逻辑运算符
●位运算符
2、算术运算符
运算符 |
说明 |
计算 |
结果 |
+ |
数学加运算 |
X=5+5 |
10 |
+ |
字符串连接 |
X="aa"+"bb" |
aabb |
- |
数学减运算 |
X=5-5 |
0 |
- |
取负数 |
Y=5;X=-Y |
-5 |
* |
数学乘运算 |
X=5*5 |
25 |
/ |
数学除运算 |
X=5/2 |
2 |
% |
数学余运算 |
X=5%2 |
1 |
++ |
数学自增运算 |
X=1;X++ |
2 |
-- |
数学自减运算 |
X=1;X-- |
0 |
●当单独使用++的时候,不管++在前面或后面,都是自身加一。
●当有赋值运算符的时候,++在后面,那么会先赋值后自身加一。在前面时,先自身加一再做赋值运算。
●自减运算符同理。
强调:字符串加任何数据类型都是字符串连接
3、赋值运算符
●赋值运算符
通用的形式:变量名=表达式
●复合赋值运算符
运算符 |
表达式 |
计算 |
结果(假设X=10) |
+= |
X+=5 |
X=X+5 |
15 |
-= |
X-=5 |
X=X-5 |
5 |
*= |
X*=5 |
X=X*5 |
50 |
/= |
X/=5 |
X=X/5 |
2 |
%= |
X%=5 |
X=X%5 |
0 |
●复合运算不存在类型提升。比如short s = 5; s+=3; 不报错,但s = s + 3; 报错,此时右侧已提升为int类型。
提示:还可以和位运算符构成复合赋值运算符,例如:^=、<<=等
4、关系运算符
运算符 |
说明 |
计算 |
结果 |
== |
相等于 |
1==1 |
true |
!= |
不等于 |
1!=1 |
false |
> |
大于 |
1>2 |
false |
< |
小于 |
1<2 |
true |
>= |
大于等于 |
1>=2 |
false |
<= |
小于等于 |
1<=2 |
true |
提示:关系运算符的结果是boolean类型的值
5、逻辑运算符
运算符 |
说明 |
表达式 |
描述 |
&& |
短路与 |
条件1&&条件2 |
仅仅两个条件同时为真,结果为真,若1为假,则不判断2 |
|| |
短路或 |
条件1||条件2 |
只要两个条件有一个为真,结果为真,若1为真,不判断2 |
! |
非 |
!条件 |
条件为真时,结果为假。 条件为假时,结果为真。 |
& |
与 |
条件1&条件2 |
仅仅两个条件同时为真,结果为真,若1为假,则2还需判断 |
| |
或 |
条件1|条件2 |
只要两个条件有一个为真,结果为真,若1为真,2还需判断 |
^ |
异或 |
条件1^条件2 |
当一个为真,一个为假时,结果为真。 |
6、位运算符
●位运算符:位运算符是对二进制的直接运算
运算符 |
说明 |
表达式结果 |
特点 |
& |
与运算 |
6&3=2 |
只有对应的两个二进制均为1时,结果位才为1,否则为0 |
| |
或运算 |
6|3=7 |
只要对应的两个二进位有一个为1时,结果位就为1 |
^ |
异或运算 |
6^3=5 |
当两对应的二进位相异时,结果位为1 |
~ |
非运算符 |
~9=-10 |
其功能是对参与运算的数的各二进位按位求反 |
<< |
左移 |
2<<3=16 |
往左移位,右边补0 |
>> |
右移 |
3>>1=1 |
往右移位,整数左边补0,负数补1 |
>>> |
无符号右移 |
3>>>1=1 |
往右移位,左边补0 |
●计算机内部的数据都是以二进制形式存在的,计算机内部对二进制运算用的是补码。
●计算机内部编码分为原码、反码和补码。正数的原码、反码和补码一样。负数的反码,保留符号位,其余按位取反。负数的补码=负数反码+1。负数的原码=负数的补码减1再取反,负数的原码=负数的补码取反再加1。
7、运算符优先级
优先级 |
运算符 |
结合性 |
1 |
() [] . |
从左向右 |
2 |
! +(正) –(负) ~ ++ -- |
从右向左 |
3 |
* / % |
从左向右 |
4 |
+(加) -(减) |
从左向右 |
5 |
<< >> >>> |
从左向右 |
6 |
< <= > >= instanceof |
从左向右 |
7 |
== != |
从左向右 |
8 |
&(按位与) |
从左向右 |
9 |
^ |
从左向右 |
10 |
| |
从左向右 |
11 |
&& |
从左向右 |
12 |
|| |
从左向右 |
13 |
?: |
从右向左 |
14 |
= += -= *= /= % = &= |= ^= ~= <<= >>= >>>= |
从右向左 |
提示:当搞不清楚运算符之间优先级的时候,自己多添加小括号不妨是一个很好的解决方案。