1.是什么
自动类型转换(也称为隐式类型转换)是指当一个较小数据类型的变量被赋值给一个较大数据类型的变量时,编译器会自动将较小数据类型的值转换为较大数据类型的值。这种转换是安全的,因为较大数据类型的表示范围包含了较小数据类型的表示范围。这种转换通常是安全的,并且不会导致数据丢失或精度降低(尽管在某些情况下可能会发生精度损失)。
那么大家都知道自动类型转换的排序吧!以下是从低到高的顺序:
①整数类型的排序
②字符类型的排序
注意细节!!!
1.有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算。
解释:
(1)所有byte
、short
、char
类型的值首先被提升为int
类型。
(2)如果表达式中的操作数有long
类型,那么所有int
类型的值也会被提升为long
类型。
(3)如果表达式中的操作数有float
类型,那么所有long
类型的值会被提升为float
类型。
(4)如果表达式中的操作数有double
类型,那么所有float
、long
、int
、short
、byte
、char
类型的值都会被提升为double
类型。
2.(byte, short) 和char之间不会相互自动转换
解释:例子 :char
到 byte
或 short
3.自动提升原则:表达式结果的类型自动提升为 操作数中最大的类型
解释:例子 :整型之间的自动提升
4. byte,short,char 他们三者可以计算,在计算时首先转换为int类型。
5.char
类型在转换为int
时,其对应的Unicode码值会被使用。
2.为什么
自动类型转换的原理基于数据类型的兼容性和范围。当两种数据类型之间存在一种自然的“升级”关系时,即一种数据类型能够完全包含另一种数据类型的所有可能值时,就可以发生自动类型转换。这里我从范围这个角度来解释。
自动类型转换还涉及到数据类型的范围。当一个数据类型的值被赋值给另一个范围更大的数据类型时,这个值可以安全地存储在目标类型中,而不会发生溢出或截断。例如,int
类型的值(在大多数平台上为32位)可以安全地转换为long
类型(在大多数平台上为64位),因为long
类型能够表示所有int
类型的值以及更多的值。
举个例子吧!
当byte类型转为short类型时,假设一个字节大小相当于一个格子,那么将一个格子放在两个格子大小的空间里是可以放得下的,但是反过来就不行了,把有两个格子空间的物品放进只能容纳一个格子的空间就会溢出,相当于精度损失!!!
当然,在这里有些小伙伴觉得有问题,为什么老师在上课的时候就能将short类型转换为byte类型呢???不过没关系,下期我将给大家讲讲另一种类型转换——强制类型转换。
好辣,这期就结束啦,感兴趣的朋友可以关注一下,更多干货将会陆续更新哦!!!