数据类型转换
数据类型转换的分类
1、隐式数据类型转换|自动类型转换
从小范围数据类型--->大范围数据类型,会发生自动类型转换
2、强制类型转换
从大范围到小范围,需要发生强制类型转换,会损失精度
公式:小范围数据类型 变量 =(小范围数据类型)大范围数据类型数据
注意:
多个数据类型的数据参与运算,结果会统一提升成参与运算的最大数据类型,如果参与运算的数据类型小于int类型,其结果会转换成int类型
boolean类型不参与类型转换
数据类型从小到大:byte short int long float double
运算符
操作数:运算符左右两边的数据
表达式:运算符+操作数
语句:在java中;代表语句的结束
运算符分类
1、算数运算符
+ - * / % ++ --
+
1)、正号,可以省略
2)、加法运算
3)、字符串的连接符
当+号左右两边操作数有一个为字符串,+号就作为字符串的连接符使用
-
1)、负号
2)、减法运算
%模|求余数|取模
1)、%左边的操作数小于%右边的操作数,其结果为%左边的操作数
++自身加1
--自身减1
++、--的区别:
操作自己|影响自己
++放在操作数前、后面,其结果都是自身+1
--放在操作数前、后面,其结果都是自身-1
操作别人|影响别人|参与运算
++、--放在操作数前面,先自身+1、-1,再参与运算
++、--放在操作数后面,先参与运算,后自身+1、-1
2、赋值运算符
赋值运算符的分类
一、基本赋值运算符
=:自右向左运算的符号
二、扩展赋值运算符(算数运算符+基本赋值运算符)
+=
-=
*=
/=
%=
扩展赋值运算符的优点:
1、自动做强制类型转换
2、提高执行效率,编译器编译时,会自动编译成扩展赋值运算符的样子
扩展赋值运算符的缺点:
1、不直观
3、比较运算符|关系运算符
> < >= <=,适用于byte、short、int、long、double、float、char类型
== !=,适用于基本数据类型,引用数据类型
比较运算符|关系运算符,其值都为boolean类型的值
4、逻辑运算符
逻辑运算符左右两边的操作数都是boolean类型的
&(与):&运算符左右两边操作数有一个为false,其结果为false,两个为true,则为true
|(或):|运算符左右两边操作数有一个为true,其结果为true,两个为false,则为false
!(非):!运算符右边的操作数为true,其结果为false,否则为true
^(异或):^运算符左右两边操作数相同,其结果为false,否则为true
&&
||
&&、||存在短路作用
短路作用:第一个操作数能决定最终结果,则不在执行第二个操作数,可以提高效率
5、条件运算符
条件表达式?值1:值2
条件表达式:必须其值为boolean的表达式
执行流程:
1、计算条件表达式
2、如果条件表达式的结果为true,最终条件运算符的结果为值1
3、如果条件表达式的结果为false,最终条件运算符的结果为值2
要求:
条件表达式中的值1和值2可以是任意类型的数据,但是应该保持一致的类型
6、位运算符(了解)
把运算符左右两边的操作数转换成二进制,进行计算,计算完成将二进制的结果转换成十进制
&:判断比较同一位置的操作数,一个为0,则为0;两个为1,才是1
|:判断比较同一位置的操作数,一个为1,则为1;两个为0,则为0
^:判断比较同一位置的操作数,相同为0,不同为1
>>:右移 先把操作数转换成二进制,将操作数向右移动个数位,保留留在分水岭左侧的数据转换成十进制
<<:左移 先把操作数转换成二进制,将操作数向左移动个数位、空位补0,将数据转换成十进制
右移、左移的规律:
右移相当于除以2,左移相当于乘以2
注意:
1、&、|、^运算符左右两边操作数为boolean类型,则作为逻辑运算符使用
2、&、|、^运算符左右两边操作数为数值,则作为位运算符使用
一元运算符|单目运算符:只有一个操作数的 +|- ++ --
二元运算符|双目运算符:+ - * / ...
三元运算符|三目运算符:条件运算符
运算符的优先级:
单目算数位关系,逻辑三目后赋值