第一部分 第六章 数据类型转换
条评论Java程序中要求参与的计算的数据,必须要保证数据类型的一致性,如果数据类型不一致将发生类型的转换。
6.1. 自动转换
一个int
类型变量和一个byte
类型变量进行加法运算,结果会是什么数据类型?
1 | int i =1; |
运算结果,变量的类型将是int
类型,这就是出现了数据类型的自动类型转换现象。
- 自动转换:将取值范围小的类型 自动提升为 取值范围大的类型 。
1 | public static void main(String[] args) { |
6.1.1 转换原理图解
byte
类型内存占有1个字节,在和int
类型运算时会提升为int
类型 ,自动补充3个字节,因此计算后的结果还是int
类型。
同样道理,当一个int
类型变量和一个double
变量运算时,int
类型将会自动提升为double
类型进行运算。
1 | public static void main(String[] args) { |
6.1.2 转换规则
范围小的类型向范围大的类型提升,byte
、short
、char
运算时直接提升为int
。
1 | byte、short、char‐‐>int‐‐>long‐‐>float‐‐>double |
6.2. 强制转换
将1.5
赋值到int
类型变量会发生什么?产生编译失败,肯定无法赋值。
1 | int i = 1.5; // 错误 |
double
类型内存8个字节,int
类型内存4个字节。1.5
是double
类型,取值范围大于int
。可以理解为double
是8升的水壶,int
是4升的水壶,不能把大水壶中的水直接放进小水壶去。
想要赋值成功,只有通过强制类型转换,将double
类型强制转换成int 类型才能赋值。
- 强制类型转换:将
取值范围大
的类型强制转换成取值范围小
的类型。
比较而言,自动转换是Java自动执行的,而强制转换需要我们自己手动执行。
6.2.1. 转换格式:
1 | 数据类型 变量名 = (数据类型)被转数据值; |
将1.5
赋值到int
类型,代码修改为:
1 | // double类型数据强制转成int类型,直接去掉小数点。 |
同样道理,当一个类型与1 相加,我们知道会类型提升,但是还想给结果赋值给short
类型变量,就需要强制转换。
1 | public static void main(String[] args) { |
6.2.2. 转换原理图解
本文标题:第一部分 第六章 数据类型转换
文章作者:foreverSFJ
发布时间:2019-07-01 12:08:37
最后更新:2019-07-01 12:08:37
原始链接:Notes/Java/Basic/Part01/06.数据类型转换.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明出处!
分享