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

引用变量的强制类型转换:
编写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;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值