概述:
Java中内置的表示特定运算规则的符号
分类:
算术运算符
赋值运算符
关系运算符
逻辑运算符
三目运算符
位运算符--实际开发中用的不多,了解即可
算术运算符
+ - * / %
++ --
+(求和) -(求差) *(求积)
/(求商)
注意:
1、结果的数据类型
两个元素的数据类型一致,结果的数据类型和元素的保持一致;
两个元素的数据类型不一致,结果的数据类型和其中大的类型保持一致;
其中byte short char类型参与运算时会自动提升为int类型
面试题:
byte b1 = 3;
byte b2 = 4;
byte b = b1+b2;//编译会报错
2、 除法:当int/int类型时,结果为int类型,直接舍弃小数部分;
商取整的效果
3、 除法:当整数/0 ,除数为0,编译不报错 运行报错(运行时异常)
Exception in thread "main" java.lang.ArithmeticException: / by zero
at OperatorDemo1.main(OperatorDemo1.java:66)
正浮点数/0:Infinity(无穷大)
负浮点数/0:-Infinity(无穷小)
0.0/0:NaN(Not a Number)非数字
4、% 取余 模余
整除的概念时使用该运算符
5、++ 自增运算符
单目运算符,对一个元素作运算
在++中间不能有空格和其他字符
只能作用变量,不能用于字面值或者常量
可以在变量前边也可以在变量的后边:
单独使用的情况下,前后没有区别;
如果参与运算时,
++在前,则会先让变量的值+1,再参与运算
变量在前,则先使用变量原来的值参与运算,再让变量的值+1
6、-- 自减运算符
单目运算符,对一个元素作运算
在--中间不能有空格和其他字符
只能作用变量,不能用于字面值或者常量
可以在变量前边也可以在变量的后边:
单独使用的情况下,前后没有区别;
如果参与运算时,
--在前,则会先让变量的值-1,再参与运算
变量在前,则先使用变量原来的值参与运算,再让变量的值-1
7、对于++ --底层实现的理解
num++;等价于num = (type)(num +1);
赋值运算符
=:赋值,不能表示相等
赋值运算符的优先级是最低的
扩展的赋值运算符
+= -= *= /= %=
注意:
左侧必须为变量,不能为具体的数据值 也不能为常量
x+=y
先使用左侧变量的值和右侧进行求和运算,将结果赋值给左侧变量
关系运算符
比较运算符,特点:结果一定为boolean类型 true false
> < >= <=
== !=
逻辑运算符
特点:针对布尔型来做运算符,运算结果也是boolean类型 true false
& | ! ^
&& ||
&:与 且 AND
true&true=true
true&false=false
false&true=false
false&false=false
总结:
两个元素都为true,结果为true;一旦出现false 结果就为false;
|: 或 OR
true|true=true
true|false=true
false|true=true
false|false=false
总结:
两个元素都为false,结果为false;一旦出现true,结果就为true;
!:非 取反
单目运算符
!true = false
!false = true
^:异或
true^true=false
true^false=true
false^true=true
false^false=false
总结:
两个元素相同则结果为false;两个元素不同则结果为true;
案例:
男女搭配干活不累(一男一女构成一个小组)
&&:双与 短路与
如果&&左边的值为false,则右边不再执行,结果必然false
除此之外& &&效果一致
||:双或 短路或
如果||左边的值为true,则右边不再执行,结果必然为true
除此之外| ||效果一致
&& ||优点:
可以提高程序的执行效率
三目运算符(三元表达式)
单目:对于一个元素
双目: 对于两个元素
格式:
表达式 ? 表达式1 : 表达式2
注意:
符号英文半角符
表达式:要求结果必须为boolean true false
执行流程:
1、执行问号前边的表达式
true,则执行表达式1
false,则执行表达式2
案例:
1、输出变量num的奇偶性
2、判断两个变量值的大小,输出最大值
3、判断三个变量值的大小,输出最大值
位运算符
开发使用的不多
源码中大量使用位运算
了解即可
特点:是对二进制的整数作运算
& | ~ ^
位移运算符
<< >> >>>
&:按位与
1&2
将两个运算的整数转为二进制,按位执行与运算
当两个都为1时,结果为1;如果有0,则结果为0;
技巧:1-true 0-false
|:按位或
将两个运算的整数转为二进制,按位执行或运算
当两个都为0时,结果才为0,只要有1,结果就为1
技巧:1-true 0-false
~:非 按位取反
单目运算符
对1取反为0,对0取反为1
^:按位异或
1-true 0-false
如果两个相等则为0;如果两个不相等则为1;
<<:左移运算符
格式:
a<<b
要将a整数左移b位
先将整数转为二进制,然后将二进制数整体向左移动相应的位数,左侧多出来的位数直接舍弃,右侧空出来的位数补0;
在一定范围内,a<<b=>a*2^b
>>:右移运算符
格式:
a>>b
要将a整数向右移动b位
先将整数转为二进制,然后将二进制数整体向右移动相应的位数,右侧多出来的位数直接舍弃,左侧空出来的位数,如果当前为负数则补1,如果当前时正数,则补0;
在一定范围内,a>>b=>a/(2^b)
>>>:无符号右移
格式:
a>>>b
要将a整数向右无符号移动b位
先将整数转为二进制,然后将二进制数整体向右移动相应的位数,右侧多出来的位数直接舍弃,左侧空出来的位数补0;