Java中instanceof关键字的用法


instanceof是Java的一个二元操作符,和==,>,<是同一类东东。由于它是由字母组成的,所以也是Java的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据 

Java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。

instanceof关键字的作用是判断一个对象是否是一个具体类的实例,我们在重写equals方法中要先判断是否是同一对象,之后再判断一个对象是否是另一个的实例,如果是判断各个属性值以判断是否是同一对象,不是一定不是同一对象。

下面是String中equals的方法源码:


也是先判断是否为同一对象,利用instanceof关键字判断是否是String的实例(任何字符串都是String的实例),如不是对字符串中每个字符进行比较

下面是instanceof的简单举例:

[java]  view plain  copy
  1. package dmeo_1;  
  2.   
  3. public class Student extends Person{  
  4.       
  5.     public static void main(String[] args) {  
  6.   
  7.         if ("a" instanceof String) {  
  8.             //所有的字符串都是String的实例  
  9.             System.out.println("字符串是Stringde实例");  
  10.         }  
  11.   
  12.         //只是声明了对象并没有创建,所以instanceof判断是false  
  13.         Student s1 = null;  
  14.         Student s2 = null;  
  15.         if (s1 instanceof Student) {  
  16.             System.out.println("s1是Student的实例");  
  17.         }  
  18.         if (s2 instanceof Student) {  
  19.             System.out.println("s2是Student的实例");  
  20.         }  
  21.   
  22.         //创建了对象实例,判断为true  
  23.         s1 = new Student();  
  24.         s2 = new Student();  
  25.         if (s1 instanceof Student) {  
  26.             System.out.println("s1是Student的实例");  
  27.         }  
  28.         if (s2 instanceof Student) {  
  29.             System.out.println("s2是Student的实例");  
  30.         }  
  31.   
  32.         /*任何类的父类都是Object类,可以这样理解,我们在创建子类对象的时候, 
  33.         调用子类的构造方法时会默认调用父类无参的构造方法,其实是会创建父类的对象的,,有继承关系的可以判断出为true*/  
  34.         if (s1 instanceof Object) {  
  35.             System.out.println("s1是Object的实例");  
  36.         }  
  37.   
  38.         Object obj = new Student();  
  39.         if (obj instanceof Student) {  
  40.             System.out.println("obj是Student的实例");  
  41.         }  
  42.   
  43.         Student s3 = new Student();  
  44.         if (s3 instanceof Person) {  
  45.             System.out.println("s3是Student的父类Person的实例");  
  46.         }  
  47.     }  
  48. }  
  49.   
  50. class Person{  
  51.   
  52. }  

输出:

字符串是Stringde实例
s1是Student的实例
s2是Student的实例
s1是Object的实例
obj是Student的实例
s3是Student的父类Person的实例

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值