目录
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。
运算符的分类:按照功能分为:算术运算符、赋值运算符、比较(或关系)运算符、逻辑运算符、位运算符、条件运算符、Lambda运算符。
按照操作数的个数分为:一元运算符(单目运算符)、二元运算符(双目运算符)、三元运算符(三目运算符)。
一、算术运算符
二、赋值运算符
基本语法:符号为:=
①:当‘=’两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理
②:支持连续赋值
扩展赋值运算符:+=、-=、*=、/=、%=
三、比较(关系)运算符
注意:
①:比较运算符的结果都是boolean型,也就是结果要么是true,要么是false
②:>、<、>=、<=只适用于基本数据类型(除boolean类型之外)
③:==、!=适用于基本数据类型和引用数据类型
④:比较运算符“==”不能误写成“=”
四、逻辑运算符
基本语法:
逻辑运算符,操作的都是boolean类型的变量或者常量,而且运算的结果也是boolean类型的值。
运算符说明:
①:&与&&:表示“且”的关系,当符号左右两边布尔值都是true时,结果才能为true,否则,为false
②:|和||:表示“或”的关系,当符号两边的布尔值有一边为true时,结果为true。当两边都为false时,结果为false
③:!:表示“非”的关系,当变量布尔值为true时,结果为flase。当变量布尔值为false时,结果为true
④:^:当符号左右两边的布尔值不同时,结果为true。当两边布尔值相同时,结果为false。理解:异或,追求的是“异”!
注意:
①:逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3&x<6
②:区分“&”和“&&”:
相同点::如果符号左边是true,则二者都执行符号右边的操作
不同点:对于&而言,如果符号左边是false,则继续执行符号右边的操作;对于&&而言,如果符号左边是false,则不再继续执行符号右边的操作。
建议:开发中,推荐使用&&
③:区分“|”和“||”:
相同点:如果符号左边是false,则二者都执行符号右边的操作
不同点:对于|而言,如果符号左边是true,则继续执行符号右边的操作,对于||而言,如果符号左边是true,则不再继续执行符号右边的操作
建议:开发中,推荐使用||
五、位运算符
位运算符的运算过程都是基于二进制的补码运算
①左移:<<
运算规则:在一定范围内,数据每向左移动一位,相当于原数据*2。(正数、负数都适用)
注意:当左移的位数n超过该数据类型的总位数时,相当于左移(n-总位数)位。
②右移:>>
运算规则:在一定范围内,数据每向右移动一位,相当于原数据/2。(正数、负数都适用)
注意:如果不能整除,向下取整
③:无符号右移:>>>
运算规则:往右移动后,左边空出来的位直接补0。(正数、负数都适用)
④:按位与:&
运算规则:对应位都是1才为1,否则为0
⑤:按位或:|
运算规则:对应位只要有1即为1,否则为0
⑥:按位异或:^
运算规则:对应位一个为1一个为0,才为1,否则为0
⑦:按位取反:~
运算规则:对应位为1,则结果为0;对应位为0,则结果为1
六、条件运算符
基本语法:
条件运算符格式:
(条件表达式)?表达式1:表达式2
说明:条件表达式是boolean类型的结果,根据boolean的值选择表达式1或表达式2
与if-else的转换关系:
凡是可以使用条件运算符的地方,都可以改写为if-else结构。反之,不成立。
开发中,如果二者都可以使用,推荐使用条件运算符,因为其执行效率较高
七、运算符优先级
运算符有不同的优先级,所谓优先级就是在表达式运算中的运算符顺序
上一行中的运算符总是优于下一行的
实际开发时候的建议:
①不要过多依赖运算的优先级来控制表达式的执行顺序,这样可读性太差,尽量使用()来控制表达式的执行顺序
②不要把一个表达式写得过于复杂,如果一个表达式过于复杂,则把它分成几步来完成