引用变量的强制转换类型

  源代码:

public class Java9 {
    public static void main(String[] args) {
        Object hello="Hello";//Object类是所有类的父类,Object类和String类存在着继承的关系
        System.out.println("字符串是否是Object类的实例"+(hello instanceof Object));
        System.out.println("字符串是否是String类的实例"+(hello instanceof String));
        System.out.println("字符串是否是Math类的实例"+(hello instanceof Math));
    }
}

运行结果:


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

  2.类型转换的规则:

①.基本类型之间的转换只能在数值类型(整数型,字符型,浮点型)之间转换,数值类型与布尔类型之间不能实现转换;

②.引用类型之间的转换只能在具有继承关系的两个类型之间进行转换,如果是两个没有任何继承关系的类型,则无法进行转换,否则会出现编译错误。如果试图把一个父类实例转换成子类类型,则这个对象必须实际上是子类实例才行(即编译时类型为父类类型,而运行是类型是子类类型),否则会编译出错;

理解:现在对于第二点的理解是:只有是类似于这样的: 父类 实例变量=new 子类();才可以即将这个实例变量强制转换为子类类型,一次来达到调用子类中方法的目的(没有转换前语法上是不能够实现调用的)

  3.instanceof运算符:instanceof运算符前一个操作数是一个引用类变量,后一个操作数通常是一个类(也可以是一个接口,可以把接口理解为一个特殊的类),它用于判断前面对象是否是后面的类或者其子类,实现类的实例;如果是,则返回true,否则返回false;上面源代码就是运行的例子。

你可能感兴趣的:(instanceof,强制转换类型)