Java开发之道
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

细节12 变化多端——数据类型转换

在进行程序开发时,经常需要在数据类型之间进行转换,如基本数据类型long 与int之间的转换、引用类型Object与String之间的转换,等等。在进行数据类型转换时,一定要注意数据的兼容性,例如,将字符串 "good" 转换为int类型就会出错。

说明

数据类型转换主要分为隐式类型转换和显式类型转换,当然了,根据需要,也可以通过其他方式进行数据类型的转换。

1.隐式类型转换

隐式类型转换是指将基本数据类型byte、short、int、long、float和double中低精度类型的常量或变量的值赋值给高精度类型的变量时,系统会自动完成数据类型的转换。

示例:

    int number = 800;
    long num = number;

说明

本示例首先创建int型变量number,其初始值为800,然后将变量number的值赋值给long型变量num,系统自动完成从int类型到long类型数据的隐式转换。

隐式类型转换也可以是指将子类对象的引用赋值给父类对象的引用时,系统自动完成从子类对象向父类对象的转换;或者是将实现接口的类的引用赋值给接口的引用时,系统自动完成从接口的实现类向接口类型的转换。

假设Dog类是Animal类的子类,接下来看下面的示例:

    Dog dog = new Dog ();
    Animal animal = dog ;

说明

本示例首先创建子类Dog的引用dog,然后将子类Dog的引用赋值给父类Animal的引用animal,这样系统自动完成从子类对象向父类对象的转换,但是,转换后的animal只能访问父类Animal类中的成员变量和方法,而不能再访问子类Dog的成员变量和方法。

2.显式类型转换

显式类型转换也称为强制类型转换,是指将基本数据类型byte、short、int、long、float和double中高精度类型的常量或变量的值赋值给低精度类型的变量时,需要使用如下方式完成数据类型的转换:

    bType var = (bType) value;

其中,bType是Java的基本数据类型,var是bType类型的变量,value是需要转换为bType 类型的常量或变量值,(bType) value 的含义就是将value 表示的常量或变量值强制转换为bType类型。

示例:

    long number = 1000L;
    int num = (int) number;

说明

本示例首先创建long型变量number,其初始值为1000,然后将变量number的值强制转换为int型,并赋值给int型变量num,完成从long型到int型数据的显式转换。

显式类型转换也可以是指将父类对象的引用赋值给子类对象的引用,或者将接口的引用赋值给实现接口的类引用时,需要使用如下方式完成数据类型的转换。

    bClass var = (bClass) value;

其中,bClass是某个类的子类或某个接口的实现类,var是bClass类的引用,value是需要转换为bClass类型的父类或所实现接口的引用,(bClass) value的含义就是将value表示的某个类的子类的引用或某个接口的实现类的引用强制转换为bClass类型。

假设Dog类是Animal类的子类,接下来看下面的示例:

    Animal animal = new Dog ();
    Dog dog = (Dog) animal;

说明

本示例首先创建父类Animal的引用animal,该引用是通过子类Dog创建的,然后定义子类Dog的引用dog,并将animal显式转换为子类Dog类型并赋值给dog,这样就完成了从父类对象向子类对象的转换,转换为Dog类型后,就可以通过子类Dog的引用dog来访问子类中的成员变量和方法,同时也可以访问从父类Animal中继承的成员变量和方法。

注意

在进行显式类型转换时,不可以直接将父类对象创建的引用显式转换为子类对象,这样做会出错,而是应该将子类对象创建的父类对象的引用显式地转换为子类对象。

3.其他的类型转换方式

其他的类型转换方式是指通过方法调用完成数据类型的转换,如将对象转换为String类型,可以通过Object类的toString ()方法来实现,将基本数据类型值转换为字符串,可以通过String类的valueOf ()方法来实现,也可以通过Integer类的parseInt ()方法将数字组成的字符串转换为int型,等等,这些都是通过方法调用来实现数据类型的转换的。

总之,数据类型转换是非常重要的,只要进行程序设计,就需要在不同数据类型之间进行转换,这样才能开发出真正实用的软件。