Java基础之运算符

六、运算符

6.1 概述:

6.2 分类:

6.2.1 算术运算符

加(+)减(-)乘(*)除(/)取余(%)前自增(++a)后自增(a++)前自减(--a)后自减(a--)字符串拼接(+)。

整数相除只能得到整数,如果还想要得到小数,那么则把操作数据*1.0,使得int类型默认转化为float类型;

自增自减:
1) 放在操作数据的前面,先自增或自减,然后再运算

2) 放在操作数据的后面,先参与运算,再自增或自减
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的结果?
其实就是2
8的底层写法:8 = 2的3次幂,即2左移3个位置,2*2^3

6.2.6 三目运算符

格式:比较表达式 ?表达式1 :表达式2;
比较表达式得到的一定是boolean类型
true : 则整条语句的值等于表达式1
false:则整条语句的值是表达式2;

练习:3个数之中最大的数;

参考书籍视频:
-学习视频:黑马程序员_Java基础视频-深入浅出精华版
-阅读书籍:Java核心技术 卷I(机械工业出版社)
          API1.8

你可能感兴趣的:(Java基础之运算符)