java中的类型转换

基本类型和抽象类型的类型转换是不同的,基本类型的转换会改变内存中的数据;抽象类型并不对对象本身做更改,而是改变可见性。
  • 基本类型转换
  • 自动类型转换(隐式类型转换)

这是由系统自动完成的类型转换,由JVM自动完成。

转换规则是对类型进行提升,也可以说是从存储范围小的类型转换到到存储范围大的类型:

byte->short/char->int->long->float->double

示例代码:

short shortFigure = 1;
int commonFigure = shortFigure;//赋值时,JVM首先将shortFigure转换为int型,然后赋给commonFigure

同样的,如果我们对shortFigure进行操作,比如shortFigure+1运算会自动提升表达式的类型,运算将返回int型的结果。

  • 强制类型转换(显式类型转换)

开发人员可以在程序中显式转换变量的类型。这种类型转换可能会损失精度。

简单类型的转换规则是从存储范围大的类型到存储范围小的类型:

double->float->long->int->short/char->byte
示例代码:

double doubleFigure = 1.10;
int commonFigure = (int)doubleFigure;

  • 抽象类型转换

某些情况下父类可以转换为子类。

示例代码:

Parent parentObject = new Child();
Child childObject = (Child) parentObject;

与简单类型的转换机制不同,上述代码本质上并没有对对象做任何的改变,改变的仅仅是对象引用。

parentObject是一个Parent类的引用,它引用所指向的对象是一个Child对象。childObject也指向这个Child对象,不同的是他是一个对Child类的引用。

它们的不同仅仅是对Child对象的可见性。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值