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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 卞潇洋 中级黑马   /  2012-11-22 11:48  /  1783 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

instanceof运算符只能用于对象引用变量,可以用它来检测对象是否是某种类型
即使被测试对象不是运算符右边的类类型的实际实例化,如果被比较的对象是一个与右边类型兼容的赋值,则instanceof仍然会返回true.例
  1. class A{}
  2. class B extends A{
  3.         public static void main(String args[]){
  4.       A myA = new B();
  5.        m2(myA);
  6. }
  7. public static void m2(A a){
  8.      if(a instanceof B)
  9.          ((B)a).doBstuff();
  10. }
  11. public static void doBstuff(){
  12.     System.out.println("'a' refers to a B");
  13. }
  14. }
复制代码
利用instanceof运算符能防止程序试图进行非法的向下强制转换。这意味着如果在Object类型上使用instanceof运算符,则任何对象引用都将求值为true.
  1. B b = new B();
  2. if(b instanceof Object){
  3. System.out.println("b is definitely an Object");
  4. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

4 个回复

正序浏览
instanceof它是一个运算符,双目的。
a instanceof b
a是一个对象
b是一个类型
表达式结束是boolean类型
验证a对象是不是b类型的

因为有了向上转型,就会出现给我们一个引用,真就不知道它的实体是什么类型的。
pulbic static void fun(Object o) {
    o是一个引用,它绑定的实体是什么类型?
  这时我们可能需要向下转型,但向下转型可能出现ClassCastException。如果有了instanceof就可以用来判断引用绑定的实体是不是指定的类型。
    Student stu = (Student)o;//这可能会出现异常。
  if(o instanceof Student) {
    Student stu = (Student)o;//这就一定不会出现ClassCastException了。
}
}
通常在要做向下转型时使用。
回复 使用道具 举报
java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
用法:
result = object instanceof class
参数:
Result:布尔类型。
Object:必选项。任意对象表达式。
Class:必选项。任意已定义的对象类。
说明:
如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object 不是指定类的一个实例,或者 object 是 null,则返回 false。

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

回复 使用道具 举报
值得学习ing!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马