JAVA中的类型转换

来源:互联网 发布:linux如何退出vi 编辑:程序博客网 时间:2024/05/22 05:33

JAVA平台中,一个对象的类型可以看做是其自身所属类的类型,也可以看做是其超类的类型.在这两种类型之间会涉及到类型转换.主要分两种:隐式对象类型转换和强制对象类型转换.

 

1.隐式对象类型转换:

    在可以使用超类的地方,都可以用子类替代.比如说,中国人肯定是地球人.如下面示例:

AutoCar car = new Car();

    这里引用变量car是AutoCar类型,又是一个Car类型.凡是能调用父类的地方,都可以使用子类.这里Car类是AutoCar的父类.引用变量car是子类AutoCar类型,但是其出生于Car类.实际后续的使用引用变量car中是AutoCar类型而不是Car类型.这就是隐式转换--是子类的.

 

2.强制对象类型转换:
    一个学生,可能是中学生,但并不一定是中学生.例如下面的代码编译报错:

AutoCar car = new Car();Car myCar = car;

编译出错原因分析如下:

   引用变量car是AutoCar类型,引用变量myCar是Car类型.把子类类型(AutoCar)的引用变量car赋值给父类类型(Car)的引用变量myCar.因为子类的信息量必定多于或等于父类.这样会导致信息的丢失.因此编译器报错.就像C里面把int类型变量赋值给char类型变量一样,有可能导致其数据错误.这种情况和C处理方式类似,要强制类型转换.

    修正后的代码如下:

AutoCar car = new Car();Car myCar = (Car)car;

 

3.instanceof运算符

    instanceof运算符性质和"=="类似,是一种测试手段,这里主要是测试类类型是否合适.如下:

if(car instanceof Car){    Car myCar = (Car)car;}

判断如果引用变量car 是否是类Car的一个实例.car是Car类的子类AutoCar的一个实例,虽然其也是Car的一个实例.因此是成立的.


 

原创粉丝点击