捯饬一下Java类型转换

2020-04-02  本文已影响0人  晏子小七
日常开发过程中,我们经常会遇到基本数据类型的转换,今天就来稍微总结一下Java的类型转换。

1.自动类型转换(隐式转换)

基本数据类型:

Java的基本数据类型可以按照从低位到高位自动转换,但从高位到低位需要强制转换。

注意几点:
理解:

我们都知道数值型类型主要区别是分配的内存空间大小不同,杯中水倒入桶中,自然不会有问题;但是桶中水倒入杯中就可能会溢出。如下图:


桶转杯会溢出

引用数据类型:

①. 基本类型可以和其对应的包装类自动转换,即自动装箱和拆箱。

什么是自动拆箱和装箱?

简单一点说,装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将包装器类型转换为基本数据类型

例:

 //自动装箱
 Integer num = 99;
 
 //自动拆箱
 int numprim = num;
 

②. 子类能直接转换为父类或接口类型:子类就是父类。
如:

Animal cat = new Cat();

③. 父类转为子类时要强转,但是在运行时若与实际对象不对应,会抛异常ClassCastException。


2.强制类型转换(显式转换)

基本数据类型:

很多时候我们会用到类型需要从高到低进行转换的场景,比如你需要将 double 型的值赋给一个 int 型的变量,你将怎么办?
这样数据是不会进行自动转换的,因为double型的范围比int型大,此时就需要进行强制转换。

例:

int a = 3;
double b = 5.0;
a = (int)b;
注意:

引用数据类型:

注意若转换后在运行时实际不是对应的对象,会抛出ClassCastException运行时异常。

Animal animal = new Cat();
Cat cat = (Cat)animal;
理解:

上面我们说了杯中水倒入桶中,自然不会有问题;但是桶中水倒入杯中就可能会溢出,可是桶中水没有超过杯的容积的话,还是可以倒进来的,此时就是所谓的强制类型转换。如下图:


容积允许可互转
上一篇 下一篇

猜你喜欢

热点阅读