引用变量的强制类型转换:

来源:互联网 发布:http dev.mysql.com 编辑:程序博客网 时间:2024/05/21 22:22

引用变量的强制类型转换:
编写java程序时,引用变量只能调用它编译时类型的方法,而不能调用它运行时类型的方法,即使它实际所引用的确实包含该方法。
如果需要这个引用变量调用它运行时类型的方法,则必须把它强制类型转换成运行时类型。强制类型转换需要借助于类型转换运算符。

(1)类型转换运算符是小括号,类型转换运算符的用法是:(type)variable,这种用法可以将variable变量转换成一个type类型的变量。
(2)除此之外,类型转换运算符可以将一个引用变量转换成另一个类型,但有以下需要注意:
1.基本雷类型转换只能在数值类型之间进行,数值类型包括整型,字符型和浮点型。数值类型和布尔类型之间不能进行类型转换。
2.(重点)引用类型之间的转换只能在具有继承关系的两个类型间进行,如果是两个没有任何继承关系的类型,则无法进行类型转换。
如果试图将一个父类实例转换成一个子类实例,则这个对象必须实际上是子类实例才行(即编译时类型为父类类型,而运行时是子类类型),否则将在运行时发生ClassCastException异常

——————————————————————————————————————————————————————————————————————
进行强制类型转换的示例程序:

public class Conversion{    public static void main(String[] args)    {        double  d = 13.4;        long l= (long)d;        System.out.println(l);        int in=5;        //boolean b = (boolean)in;   试图将一个数值变量强制转换为一个布尔变量,将编译出错        Object obj ="hello";        //obi变量的编译时类型为Object,Object与String存在继承关系,可以强制类型转换        //而obi变量的实际类型是String,所以运行时也能通过        String objStr = (String)obj;        System.out.println(obiStr);        //定义一个objPri变量,编译时类型为Object,实际类型为Integer        Object obiPri   =new Integer(5);        //objPri变量编译时类型为Object,运行时类型为Integer        //Object与Integer存在继承关系,可以强制类型转换,        //而objpri实际类型是Integer        //所以下面代码将在运行时引发ClassCastException异常        String str =(String)objPri;    }}
0 0
原创粉丝点击