instanceof运算符

instanceof  (运行阶段动态判断)

  第一:instanceof运算符可以在运行阶段动态判断引用指向对象的类型

  第二:instanceof语法

           (引用  instanceof  类型)

  第三:instanceof运算符的结果只能是true/false

  第四: c是一个引用,c变量保存了内存地址指向了堆中的对象

             假设(c  instanceof  Cat)为true表示:

                   c引用指向的堆内存中的java对象是一个Cat

             假设(c  instanceof  Cat)为true表示:

                   c引用指向的堆内存中的java对象不是一个Cat

*****重点:子类特有的方法才需要强制类型转换

  程序员一定要养成的一个习惯:

             任何时候,任何地点在对类型进行向下转型的时候都要使用instanceof运算符进行判断。这样可以很好的避免程序出错。

例:

      public  class  Animal(){

           …….

     }

      class  Cat  extends  Animal  () {

          ……..

}

      class  Bird  extends  Animal  () {

         ……….

}

      

        Animal  a1  =  new  Bird();

        Cat  y  =  (Cat)  a1

        y.move;//编译没问题但是会出现运行错误

       //cat和bird之间没有关系,他们都只是继承于父类Animal,之间强制转换会报错

        正确的做法是使用instanceof运算符

        if  (a1  instanceof  cat){//如果a1是Cat

        Cat  y  =  (Cat)  a1;//则进行强制类型转换

        y.move;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值