第三章 运算符和表达式
3.1 算术运算符
针对数学上的算术运算
1)+ :加法运算:针对数字的(整型或浮点型) ****2正号:用于****拼接字符串
2)-:减法运算:针对数字的(整型或浮点型) *负号*
3)*:乘法运算
4)/:除法运算
如果出书和被除数都是整型的,得到结果也是整型的 比如:10/3 => 3
如果除数和被除数至少有一个是浮点型,则得到结果也是浮点型的
5)%:求余,取余,求模
比如:整数求余:10%3 => 1
小数求余:
System.*out*.println(10.5%3.2);//得到结果为0.8999999999999995,因为默认类型为double类型,都是近似值,而离0.9最近的就是这个数
负数求余:运算时得到结果的正负由****前面****的正负决定
System.*out*.println(-10 / 3); // -3
System.*out*.println(-10 % 3); // -1
System.*out*.println(10 % -3); // 1
System.*out*.println(-10 % -3); // -1
运算方法:前面的数-(后面的数*商)
- ++和–(自增和自减):既可针对整型运算时使用,也针对浮点型使用
*基本单位是整数1*;
无论是自增还是自减都有前置和后置
前置:++a,–b *先进行自增(自减)运算,再把**运算后**的值作为**表达式的值*
后置:a++,b-- *先把变量的值取出作为表达式的值**,再进行自增(自减)运算*
3.2 比较/条件运算符
主要针对数值型,进行数学上的比较运算
运算结果是布尔型
>
>=
<
<=
==
!=
==和!= 除了可以对数值型进行运算,也可以对****引用类型****进行运算
当对引用类型进行比较运算时,两个引用是否指向****同一个对象****
3.3 逻辑运算符
逻辑运算,操作数必须都是布尔型的 运算结果是布尔型
逻辑“与”:A&B A&&B
仅当两个操作数都是true,结果为true,否则为false
逻辑“或”:A|B A||B
仅当两个操作数都为false,结果为false,否则为true
逻辑“非”:!A 取反:如果A为true,结果为false;如果A为false,结果为true
*短路运算*:
&&和||在运算时,如果第一个操作数已经能够确定整个表达式的值,第二个操作数将不再执行
短路运算经常与++或–一起运算
3.4 位运算符
针对二进制
&:按位与:如果两个数的对应位都是1,结果的对应位也是1,否则就是0
1010 => 10
1110 => 14
1010 => 10
|:按位或:如果两个数的对应位都是0,结果的对应位也是0,否则就是1
1010 => 10
1110 => 14
1110 => 14
^:按位异或:如果两个数的对应位相同时,结果的对应位是0,否则是1
1010 => 10
1110 => 14
0100 => 4
~:取反:单操作数 如果原来的数字为1,结果为0;如果原来数字为0,结果为1
>>:右移位:第一位为符号位,不变,高位向低位移动,高位按符号位补,低位移走就舍掉
正数
0101 1010
>>2
0001 0110
负数
1101 1010
>>2
1111 0110
>>>:无符号右移位
不存在符号位
高位向低位移动,高位补零,低位移走就舍掉
1101 1010
>>>2
0011 0110
<<:左移位:低位向高位移动,低位补零,高位移走就舍掉
0101 1010
<<2
0110 1000
都已2n为准 >>n或<<n
除以8,8 = 23
>>3
乘8,8 = 23
<<3
3.5 赋值运算符
= 给变量赋值 运算顺序从右向左
左边必须是一个变量,右边必须是一个符合类型的表达式
a = 10;
a = b + 10;
a = b = 10;(不推荐)
复合赋值运算符
当二元/二目运算符和等号结合起来,就会组成复合赋值运算符
a += b => a = a + b;
编译器自动处理
3.6三目运算符
*A* *?* *B* *😗 *C*
A必须是一个布尔型
如果A=true,这时整个表达式的值是B的值,C不会执行
如果A=false,这时整个表达式的值是C的值,B不会执行
3.7 表达式中运算符的优先级
*优先级最高的是()*
如果表达式中包含了多种运算符,使用****()****明确运算的顺序
运算符优先级顺序为
(),
++,–,
!,~,instance of,
*,/,%,+,-,
<<,>>,>>>,
<,>,<=,>=,==,!=,
&,^,
&&,||,
?:
*运算符* | *结合性* |
---|---|
[ ] . ( ) (方法调用) | 从左向右 |
! ~ ++ – +(一元运算,正号) -(一元运算,负号) | 从右向左 |
* / % | 从左向右 |
+(加) -(减) | 从左向右 |
<< >> >>> | 从左向右 |
< <= > >= instanceof | 从左向右 |
== != | 从左向右 |
& | 从左向右 |
^ | 从左向右 |
| | 从左向右 |
&& | 从左向右 |
|| | 从左向右 |
?: | 从右向左 |
= | 从右向左 |