Java初学习 - instanceof的用法

147 篇文章 0 订阅
修改并补充instanceof的用法,引用原文地址:http://blog.csdn.net/cntanghai/article/details/6096976
package myPackage;  
/** 
* instanceof运算符用法 
* 运算符是双目运算符,左面的操作元是一个对象,右面是一个类.当 
* 左面的对象是右面的类创建的对象时,该运算符运算的结果是true,否则是false 
*  
* 说明:(1)一个类的实例包括本身的实例,以及所有直接或间接子类的实例 
* (2)instanceof左边操作元显式声明的类型与右边操作元必须是同种类或右边是左边父类的继承关系, 
* (3)不同的继承关系下,编译出错 
*/  
class Person {  
}  
class Student extends Person {  
}  
class Postgraduate extends Student {  
}  
class Animal {  
}  
public class Ex_instanceOf {  
public static void main(String[] args) {  
   instanceofTest(new Student());  
}  
/** 
* 这个程序的输出结果是:p是类Student的实例 
*  
* Person类所在的继承树是:Object<--Person<--Student<--Postgraduate。 
*  
* 这个例子中还加入一个Animal类,它不是在Person类的继承树中,所以不能作为instanceof的右操作数。 
*  
* @param p 
*/  
public static void instanceofTest(Person p) {  
   // p 和 Animal类型不一样,彼此之间没有继承关系,编译会出错  
   // 提示错误:Incompatible conditional operand types Person and Animal  
   // if(p instanceof Animal){  
   // System.out.println("p是类Animal的实例");  
   // }  
   //下面代码的除了第一行都会输出  
   if (p instanceof Postgraduate) System.out.println("p是类Postgraduate的实例");  
   if (p instanceof Person) System.out.println("p是类Person的实例");  
   if (p instanceof Student) System.out.println("p是类Student的实例");  
   if (p instanceof Object) System.out.println("p是类Object的实例");  
 
}  
} 


interface A{  
      
}  
class B implements A{  
       
}  
class C extends B{  
       
}  
public class Iinstanceof {  
  
    public static void main(String[] args) {  
        A ab=new B();  
        A ac=new C();  
        B bc=new C();  
        B bb=new B();  
        C cc=new C();  
        //对象实现一个接口,用这个对象和这个接口进行instanceof判断,都为true。  
        System.out.println("ab instanceof A="+(ab instanceof A));  
        System.out.println("ac instanceof A="+(ac instanceof A));  
        System.out.println("bc instanceof A="+(bc instanceof A));  
        System.out.println("bb instanceof A="+(bb instanceof A));  
        System.out.println("cc instanceof A="+(cc instanceof A));  
        //对象和父类进行instanceof判断,都为true  
        System.out.println("ab instanceof B="+(ab instanceof B));  
        System.out.println("ac instanceof B="+(ac instanceof B));  
        System.out.println("bc instanceof B="+(bc instanceof B));  
        System.out.println("bb instanceof B="+(bb instanceof B));  
        System.out.println("cc instanceof B="+(cc instanceof B));  
        //对象和他的子类进行instanceof判断为false  
        System.out.println("ab instanceof C="+(ab instanceof C));  
        System.out.println("ac instanceof C="+(ac instanceof C));  
        System.out.println("bc instanceof C="+(bc instanceof C));  
        System.out.println("bb instanceof C="+(bb instanceof C));  
        System.out.println("cc instanceof C="+(cc instanceof C));  
    }  
}  

//程序输出:
ab instanceof A=true
ac instanceof A=true
bc instanceof A=true
bb instanceof A=true
cc instanceof A=true
ab instanceof B=true
ac instanceof B=true
bc instanceof B=true
bb instanceof B=true
cc instanceof B=true
ab instanceof C=false
ac instanceof C=true
bc instanceof C=true
bb instanceof C=false
cc instanceof C=true



  • 16
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
Java中,instanceof是一个保留关键字,被用来测试一个对象是否是指定类或其父类的一个实例。它返回一个boolean类型的值,如果对象是指定类或其父类的一个实例则返回true,否则返回false。 instanceof通常用于对象类型的强制转换,可以使用它来检查一个对象是否是某个类的实例,然后进行相应的处理。如果一个对象是指定类的实例,可以使用强制类型转换将其转换为指定类的类型,然后对其进行操作。如果一个对象不是指定类的实例,可以进行其他逻辑处理。 例如,在一个类中,可以使用instanceof关键字来判断一个对象是否是另一个类的实例,如果是,则可以对其进行相应的操作。在上面的代码示例中,C类中的convert方法使用了instanceof关键字来检查参数b是否是Object类的实例,如果是,则调用了print方法打印出b的信息。 总结起来,instanceof关键字在Java中的用法是用来测试一个对象是否是指定类或其父类的一个实例,可以用于对象类型的强制转换和判断逻辑。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Java instanceof用法详解](https://blog.csdn.net/kuangay/article/details/81563992)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Java关键字instanceof用法及实现策略](https://download.csdn.net/download/weixin_38621553/12721904)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值