概念: 定义了指定运算规则的符号 分类: 算术运算符 赋值运算符 关系运算符 逻辑运算符 三目运算符 位运算–了解即可 1.算数运算符 +(求和) -(求和) *(求积) /(求商) int/int结果必然为int类型 小数部分会被直接舍弃掉
除数为0: 1、 int/0 Exception in thread "main" java.lang.ArithmeticException: / by zero at OperatorDemo1.main(OperatorDemo1.java:29) 2、正浮点数/0 Infinity 无穷大 3、负浮点数/0 -Infinity 无穷小 4、0.0/0 NaN 非数字 Not a Number %(取余 模余) 1、运算结果数据类型 结果数据类型和元素中大的数据类型保持一致byte short char在参与运算会自动提升为int类型
++ -- ++:自增运算符 符号可以在变量的前边也可以在后边 如果++单独使用,前后没有区别; 如果++参与运算时, 1、变量在前 ++在后 则先使用变量原来的值参与运算,再让变量的值+1 2、++在前 变量在后 则变量的值先+1 再使用增加之后的值参与运算 --:自减运算符 同理 注意: ++ --只能作用于变量 不能作用于常量、值赋值运算符 = += -= = /= %= 注意: 1、= 表示赋值 不代表相等 +=: 格式:变量 += 数据值; num += 2; num = num + 2; 总结规则: 左侧变量的值和右侧的值进行求和,将结果赋值回左侧的变量 注意: += -= 等符号左侧必须为变量 常量和值不可以使用 += 等符号底层默认做了强制类型的转换 赋值运算符的优先级是最低*的 关系运算符 比较运算符 > < >= <= ==(等于) !=(不等于) 结果是true flase a>b>c 不支持 逻辑运算符 针对boolean类型来做运算 true false,结果依然是boolean类型 & | ! ^ && ||
&:且 AND 元素1 & 元素2 true & true=true true & false=false false & true=false false & false=false 总结:都为true 结果为true 有false 则为false
|:或 Or 元素1 | 元素2 true | true=true true | false=true false | true=true false | false=false 总结:都为false结果为false 有true 则为true
!:非 取反 !true=false !false=true
^:异或 相同则为false 不同则为true true ^ true = false false ^ false = false true ^ false = true false ^ true = true
boolean flag1 = true; true 男 false 女 boolean flag2 = true; flag1^flag2 = true&&:双与 短路与 当&&左边为false时,右边不再执行,结果必然为false; &&和&的结果是完全一致
||:双或 短路或 当||左边为true时,右边不再执行,结果必然为true; ||和|的结果是完全一致 三目运算符:三元表达式 单目 -一元表达式:对一个元素作运算 ++ – ! 双目-二元表达式: + - = & 格式: 布尔类型的表达式 ? 表达式1 : 表达式2 执行流程: 1、布尔类型的表达式 true:表达式1 false:表达式2 位运算符(了解即可) &:按位与 1 true 0 false 1&1=1 1&0=0 总结:都为1 结果为1 如果有0 结果为0 ^:按位异或 相同0 不同为1
~:按位取反*( ~i = -i-1)*
~1=0 ~0=1 计算机底层存储和计算都是基于二进制的补码;正数:原码=反码=补码 负数: 原码:直接按照十进制转二进制转得到的数最高位为1 反码:在原码的基础上,符号位不变其余位依次取反 补码:在反码的基础+1
<<:按位左移 x << y 先将x转为二进制,将x整体左移y位,左侧多出的数直接舍弃,右侧空出来的二进制位补0 x << y <——>x*2^y
>>:按位右移 x>>y 先将x转为二进制,将x整体右移y位,右侧多出的位数直接舍弃, 左侧空出来的二进制位补和符号位一致的数;(正数补0 负数补1) x >> y <——>x/(2^y):无符号右移 x>>>y 先将x转为二进制,将x整体右移y位,右侧多出的位数直接舍弃, 左侧空出来的二进制位补0,最终结果一定是正数
注意: & | ^即使逻辑运算符 又是位运算符,取决于元素的数据类型 如果是boolean 就是逻辑运算符 如果是整型 就是位运算符
运算符优先级: () 单目运算符 ++ – ! ~ 算术运算符 关系运算符 逻辑运算符 赋值运算符
补充 1、+ 求和 字符串拼接功能 字符串+字符串 字符串+其他数据类型 字符串+数据类型1+数据类型2