instanceof运算符的作用

 时间:2024-10-16 21:45:52

1、请看下面的代码片段

instanceof运算符的作用

3、在代码中,我们创建了一些对象,并且使用instanceof运算符判断某个对象是否属于某种类型。请问程序的输出结果会是什么呢?公布一下答案:全部输出true!有读者可能不解为什么会是这样的输出结果?比如标号为⑥的那行代码,明明p2是Person类的对象,而Person类是Student的父类,为什么虚拟机会认为p2是Student类的对象呢?为了弄清楚这个问题,我们必须搞清楚instanceof运算符的判断依据。instanceof运算符在判断的过程中,看的是引用实际指向的对象 (而不是看引用自身的类型)是不是可以被认定为属于某种类型。如果可以被认定为属于这种类型,那么运算结果为true;反之,如果假设不成立或未必成立,则运算结果为false。比如说,p2虽然是Person类型的,但它实际指向了一个Student类型的对象,所以p2肯定属于Student类型,因此输出结果为true。其实我们可以用一种比较简单的方法来理解输出结果,那就是用一个自问句式来判断:一个a是一个A吗?比如说,p2实际指向的是一个Student类型的对象,而代码中出现了” p2 instanceof Person”(见标号为④的代码),我们就可以自问一下:一个Student(学生,既p2指向的那个对象)是一个Person(人)吗?一个学生当然是一个人,所以这句自问的答案肯定是true。反过来,如果代码被写成” p1 instanceof Student”, p1实际指向的是一个Person类的对象,我们再来分析一下运算结果,也可以采用这种自问的形式:一个Person(人)是一个Student(学生)吗?一个人未必是一个学生,所以这种假设并不一定成立,因此判断的结果为false。

4、那么,在使用这个运算符的过程中,要注意哪些事项呢?归纳一下可以总结出两点:1、instanceof左边必须是引用数据类型,而它右边一定是类或者接口的名称,不能是基础数据类型的名称。比如”1 instanceof int”或者” 1 instanceof Integer”这样的写法都是错误的。2、如果instanceof左边的引用指向的是一个空对象(null),那么无论instanceof右边无论是什么类型,运算结果肯定是false。

  • DW新建一个html网页
  • Dreamweaver如何打开字体家族
  • HTML教程 列表标签——有序列表
  • 关键帧,空白关键帧,普通帧的区别是什么
  • Animate如何调整时间轴上显示的帧数
  • 热门搜索
    丽江有哪些旅游景点 摄影旅游 旅游度假村 上海市旅游局 淘宝旅游 中国旅游研究院 成都到九寨沟旅游团 香港旅游价格 桂林旅游景点大全 海上旅游