A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 我自信我很牛 中级黑马   /  2013-3-15 22:36  /  2117 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 烟磊磊 于 2013-3-15 23:16 编辑

在多态中,instanceof关键字,老师讲了但是听的有点云里雾里,求指点

6 个回复

倒序浏览
nstanceof操作符的作用是判断一个变量是否是右操作数指出的类的一个对象,由于java语言的多态性使得可以用一个子类的实例赋值给一个父类的变量,而在一些情况下需要判断变量到底是一个什么类型的对象,这时就可以使用instanceof了。当左操作数是右操作数指出的类的实例或者是子类的实例时都返回真,如果是将一个子类的实例赋值给一个父类的变量,用instanceof判断该变量是否是子类的一个实例时也将返回真。
回复 使用道具 举报
  java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
用法:
result = object instanceof class
参数:
Result:布尔类型。
Object:必选项。任意对象表达式。
Class:必选项。任意已定义的对象类。
说明:
如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object 不是指定类的一个实例,或者 object 是 null,则返回 false。

评分

参与人数 1技术分 +1 收起 理由
洪建超 + 1

查看全部评分

回复 使用道具 举报
    instanceof运算符的前一个操作数通常是一个引用类型的变量,后一个操作符通常是一个类(也可以是接口),它用于判断前面的对象是否是后面的类,或者子类、实现类的实例。如果是,则返回true,否则返回false。
    在使用instanceof运算符时需要注意:instanceof运算符前面操作数的编译时的类型要么与后面的类相同,要么是后面类的父类,否则编译错误。给个示例代码
  1.         public static void main(String[] args)
  2.         {
  3.                 //声明hello使用Object类,Object是所有类的父类,但hello变量的实际类型是String
  4.                 Object hello = "hello";
  5.                 //String是Object的子类,所以返回true
  6.                 System.out.println("字符串是否是Object类的实例:"+(hello instanceof Object));  //true
  7.                 System.out.println("字符串是否是String类的实例:"+(hello instanceof String));  //true
  8.                 //Math是Object的子类,所以返回false
  9.                 System.out.println("字符串是否是Math类的实例:"+(hello instanceof Math));    //false
  10.                 //String实现了Comparable接口,返回true
  11.                 System.out.println("字符串是否是Comparable接口:"+(hello instanceof Comparable));  //true
  12.                 String a = "hello";
  13.                 //String类既不是Math类,也不是Math父类,下面代码编译出错
  14.                 //System.out.println("字符串是否是Math类的实例:"+(a instanceof Math));        //false
  15.         }
  16. }
复制代码
instanceof运算符的作用是在执行强制类型转换之前,首先判断前一个对象是否是后一个类的实例,是否可以成功的转换,从而保证代码更加健壮。

点评

给力!!懂了谢了  发表于 2013-3-15 23:15

评分

参与人数 1技术分 +1 收起 理由
洪建超 + 1

查看全部评分

回复 使用道具 举报
instanceof运算符用于判断前面的对象是否是后面的类,或者其子类,实现类的实例,是就返回true,不是就返回false.
回复 使用道具 举报
instanceof是Java的一个二元操作符,和==,>,<是同一级别。由于它是由字母组成的,所以也是Java的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。
举个例子:Animial a=new Cat();
                if(a instanceof Cat)  //判断a所代表的对像是否Cat的实例。向下转型调用 Cat 特有的方法。
                {
                   Cat c = (Cat)a;
}

回复 使用道具 举报
instanceof 就是一个比较运算符,比如: a instanceof A   如果对象a 是 类A的一个实例,那么就为真,否则为假
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马