六、运算符
6.1 概述:
6.2 分类:
6.2.1 算术运算符
加(+)减(-)乘(*)除(/)取余(%)前自增(++a)后自增(a++)前自减(--a)后自减(a--)字符串拼接(+)。
整数相除只能得到整数,如果还想要得到小数,那么则把操作数据*1.0,使得int类型默认转化为float类型;
自增自减:
2) 放在操作数据的后面,先参与运算,再自增或自减
1) 放在操作数据的前面,先自增或自减,然后再运算
6.2.2 赋值运算符
基本赋值运算符=:把=右边的数据赋值给左边
扩展赋值运算符:+=,-+,*=,/=,%=
+=:把左边和右边做加法,再赋值给左边;其内在隐含个一个类型提升;
6.2.3 比较运算符(关系运算符)
相等于(==)、不等于(!=)、小于(<)、小于等于(<=)、大于(>)、大于等于(>=)、检查是否是类的对象(instance of)
注意:比较运算符的值都是boolean类型的;
6.2.4 逻辑运算符
逻辑运算符是用来连接布尔型表达式的,逻辑与(&)、 逻辑或(|)、 逻辑非(!)、 逻辑双与(&&)、 逻辑双或(||)、逻辑异或(^)
逻辑& 与逻辑&& :有false则false
逻辑|与逻辑|| :有true则true
逻辑^ :相同为false,不同为true;
逻辑!:非false则true,非true则false;
6.2.5 位运运算(最接近计算机底层的)
位与运算(&)、位或运算(|)、位反码(~)、位异或运算(^)<<(左移)、>>(右移)、>>>(无符号右移)
& :有0则0(与逻辑运算符中&很像呀,有false则false)
| :有1则1(与逻辑运算符中|很像呀,有true则true)
^ :相同为0,不同为1(与逻辑运算符中^很像呀,相同为false,不同为true)
特点:一个数据对另一个数据位异或(^)两次,则值是此该数本身;
~:非0则1,非1则0(与逻辑运算符中!很像呀,非false则true,非true则false)
<<(左移):左移n位,空位补0,高位移除
(左移的结果 = 左移的数据2的移位数次幂)即12=32(二进制)^2
“>>(右移)”:左移n位,二进制的高位是0,则空缺位补0,二进制的高位是1则空缺位补1。
(左移的结果 = 左移的数据/2的移位数次幂)即12=3/2(二进制)^2
">>>(无符号右移)":右移n位,空缺位总是补0
位运运算练习:
请实现2个整数变量的交换?
请写出最有效的28的结果?
其实就是28的底层写法:8 = 2的3次幂,即2左移3个位置,2*2^3
6.2.6 三目运算符
格式:比较表达式 ?表达式1 :表达式2;
比较表达式得到的一定是boolean类型
true : 则整条语句的值等于表达式1
false:则整条语句的值是表达式2;
练习:3个数之中最大的数;
参考书籍视频:
-学习视频:黑马程序员_Java基础视频-深入浅出精华版
-阅读书籍:Java核心技术 卷I(机械工业出版社)
API1.8