目录
基本数据类型的类型转换
不同的基本数据类型之间进行运算时需要进行类型转换。
boolean类型与其他基本类型不能进行类型转换(既不能进行自动类型的提升,也不能强制类型转换),否则,编译将出错。
基本数据类型的转换主要在赋值运算、算术运算时发生。
转换方式有两种:自动类型转换和强制类型转换
1、自动类型转换
规则1:如果一个操作数为double型,则整个表达式可提升为double型
规则2:满足自动类型转换的条件
两种类型要兼容:数值类型(整型和浮点型)互相兼容
目标类型大于源类型: 例如:double 型大于 int 型
默认转换(从小到大的转换)
byte,short,char—int—long—float—double
byte,short,char相互之间不转换,他们参与运算首先转换为int类型
2、强制转换
强制转换一般用于高级别的类型赋值给低级别类型
例如:
byte a = 2;
byte b = 3 ;
byte c = a + b;(错误,java中数值计算默认使用int类型,得到的结果为int类型,所以不能直接用byte接收)
byte c = (byte)(a + b);
short a = 2;
short b = 3 ;
short c = a + b;(错误,java中数值计算默认使用int类型,得到的结果为int类型,所以不能直接用short接收)
short c = (short)(a + b);
long a = 2;
long b =3 ;
long c = a + b; 此代码不会报错,因为long取值范围比int大
char类型可以与byte类型相互转
原因:涉及到ASSII码值,且取值范围为0-127,但并不绝对
char类型的变量不能赋值给byte类型的变量,但char可以直接赋值给byte类型的变量
3、关系运算符
运算符 | 含义 | 范例 | 结果 |
== | 等于 | 5==6 | false |
!= | 不等于 | 5!=6 | ture |
> | 大于 | 5>6 | false |
< | 小于 | 5<6 | ture |
>= | 大于等于 | 5>=6 | false |
<= | 小于等于 | 5<=6 | ture |
注意:
=
为赋值运算符,
==
为等于运算符
关系表达式的结果为布尔值
>
、
<
、
>=
、
<=
运算符只支持数值类型的数据比较
==
、
!=
运算符支持所有数据数据类型的比较
>
、
<
、
>=
、
<=
运算符的优先级别高于
==
、
!=
4、boolean类型
真ttrue 假false
5、逻辑运算符
运算符 | 含义 | 运算规则 |
&& | 短路与 |
两个操作数都是true,结果才是true;如果左边为false,右边的表达式不会进行运算 |
|| | 短路或 |
两个操作数一个是true,结果为true;如果左边为true,右边的表达式不会进行运算 |
! | 逻辑非 |
操作数为true,结果为false;操作数为false,结果为true |
& | 逻辑与 |
两个操作数都是true,结果才是true;不论左边取值,右边的表达式都会进行运算 |
| | 逻辑或 |
两个操作数一个是true,结果为true;如果左边为true,右边的表达式都会进行运算 |
^ | 逻辑异或 |
两个操作数相同,结果为false;两个操作数不同,结果为true |
6、位运算符
运算符 | 含义 | 运算规则 |
& | 按位与 |
两个操作数都是1,结果才是1 |
| | 按位或 |
两个操作数一个是1,结果为1 |
^ | 按位异与 |
两个操作数相同,结果为0;两个操作数不同,结果为1 |
~ | 按位非 |
两个操作数都是true,结果才是true;不论左边取值,右边的表达式都会进行运算 |
<< | 左移 |
右侧空位补0 |
>> | 右移 |
左侧空位补最高位,即符号位 |
>>> | 无符号右移 |
左侧空位补0 |
注意:
位运算符的操作数都是整型数,包括
int
、
short
、
long
、
byte
和
char
位运算符的运算结果也都是整型数,包括
int
、
long
如果操作数是
char
、
byte
、
short
,位运算前其值会自动晋升为
int,
运算结果也为
int
位运算符对操作数以二进制为单位进行运算
7、条件运算符
int min;
min = 5 < 7 ? 5 : 7;
System.out.println(min);
min = 10 < 7 ? 10 : 7;
System.out.println(min);
8、运算符优先级
优先级别最低的是赋值运算符
1、单目运算符包括! ~ ++ –,优先级别高
2、可以通过()控制表达式的运算顺序,()优先级最高
3、总体而言,优先顺序为算术运算符 > 关系运算符 > 逻辑运算符
4、从右向左结合性的只有赋值运算符、三目运算符和单目运算符
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/93388.html