现在的位置: 首页 > 综合 > 正文

java中的类型转换

2013年02月26日 ⁄ 综合 ⁄ 共 780字 ⁄ 字号 评论关闭

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

这是由系统自动完成的类型转换,由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对象的可见性。

抱歉!评论已关闭.