1.Java规范
对应类型的数据赋值给对应类型的变量
基本数据类型转换 :
注意: boolean不参与类型转换
自动类型提升 :小转大
强制类型转换 : 大转小有可能损失精度
1. 如果给比int更小的byte,short,char赋值,只要在其范围内的常量值都能成功赋值
2. 如果存在多种类型的数据参与运算,结果为参与运算的最大类型
如果结果类型
3.byte -> short-> char -> int -> long -> float -> double
2.运算符、操作数、表达式、算数运算符
运算符 :
根据运算符的功能作用进行分类:
算数运算符
赋值运算符
比较运算符|关系运算符
逻辑运算符
条件运算符
位运算符(了解)
操作数: 运算符两边的数据成为操作数
表达式: 运算符连接左右的操作数整体称之为表达式 a+b
语句: 以分号结尾;
根据操作数的个数对运算符进行分类 :
一元运算符|单目运算符: 操作数只有一个 +(正号) -(负号) ++ -- !
二元运算符|双目运算符: 操作数有两个 + - * / %
三元运算符|三目运算符: 操作数有三个,条件运算符
算数运算符 :
+ - * / % ++ --
+:
1)正号->省略
2)加法运算
3)字符串连接符 : 当+左右一旦出现字符串,就作为字符串连接符存在,结果拼接为一个字符串
% : 求余数
如果第一个操作数小于第二个操作数,结果为第一个操作数
++ --
++ 自增(自身+1)
a++ | ++a ==> a=a+1;
-- 自减(自身-1)
a-- | --a ==> a=a-1;
作自己 :
++放在操作数前面还是后面,都是自身+1
--放在操作数前面还是后面,都是自身-1
影响别人(赋值|输出|运算) :
++|--放在操作数的前面,先自身+1|-1,然后再参与运算
++|--放在操作数的后面,先参与运算,然后再自身+1|-1
3.赋值运算符
赋值运算符 :
基础赋值运算符
=
是java中唯一一个自右向左运算的符号
扩展赋值运算符(算数+赋值)
+= ==> a+=b; -> a=a+b;
-= ==> a-=b; -> a=a-b;
*=
/=
%=
优点 :
1.提高运行效率,编译器会自动优化成扩展赋值运算符
2.自动做强制类型转换
4.关系比较运算符
结果为boolean类型的值
> < >=
比较byte,short,int long double float char
== !=
比较基本数据类型|引用数据类型
5.逻辑运算符
两边的操作数是值为boolean类型表达式
& 与 : 一个为false就是false,两个都为true才是true
| 或 : 一个为true就是true,两个都为false才是false
! 非 : 取反 !true->false !false->true
^ 异或 : 相同为false,不同为true
短路: 当第一个操作数已经能够确定最终表达式的结果,第二个操作数将不再执行
&& : 逻辑与&相同,只不过存在短路效果
|| : 逻辑与|相同,只不过存在短路效果
注意: 推荐使用短路运算符
6.条件运算符
流程:
1.条件表达式(值为boolean类型的表达式),得到一个boolean结果
2.如果结果为true,取值1
3.如果结果为false,取值2
7.位运算符
针对于二进制的操作数进行运算,得到的结果转为十进制
& : 先把操作数转为二进制,然后判断统一位置的两个数一个为0就是0,两个都为1才是1
| : 先把操作数转为二进制,然后判断同一位置的两个数一个为1就是1,两个都为0才是0
^ : 先把操作数转为二进制,然后判断同一位置的两个数相同为0不同为1
以上三个运算符当操作数为boolean类型作为逻辑运算符使用,当操作数为数值,作为位运算符使用
左移
右移>> : 先把第一个操作数a转为二进制,然后右移动第二个操作数个位数,移出的位置去掉,剩余位数转为十进制
总结规律 :
左移相当于乘以2的次方 a a*2^b
右移相当于除以2的次方 a>>b ==> a/2^b



