instanceof 是一个操作符(类似new, ==等)

( Object reference variable ) instanceof  (class/interface type)

if(a instanceof B){
}

表示:a 是不是 B 这种类型

用法:

1. 一个对象是本身类的一个对象

2. 一个对象是本身类所继承类(父类的父类)和接口(接口的接口)的一个对象

3. 所有对象都是Object

4. 凡是null有关的都是false  null instanceof(class)

下面是一个例子:

String name = "James";
boolean result = name instanceof String; // 由于 name 是 String 类型,所以返回真

isInstance是Class类的一个方法

class.isInstance (obj)

if(B.Class.isInstance (a)){

};

表示:a 是否能强转为 B 类型

类名.class和对象.getClass()几乎没有区别,因为一个类被类加载器加载后,就是唯一的一个类。

用法:

1. 一个对象是本身类的一个对象

2. 一个对象能被转化为本身类所继承类(父类的父类等)和实现的接口(接口的父接口)强转

3. 所有对象都能被Object的强转

4. 凡是null有关的都是false   class.isInstance(null)

实例

 1 interface A {
2 }
3
4 class B {
5 }
6
7 class C implements A {
8 }
9
10 class D extends B {
11 }
12
13 public class TestInstanceof {
14
15 public static void main(String[] args) {
16 C t1 = new C();
17 D t2 = new D();
18
19 // obj instanceof class:这个对象是不是这种类型.
20 // 测试1:一个对象是本身类的一个对象
21 System.out.println(t1 instanceof C); // true
22 System.out.println("============");
23
24 // 测试2:一个对象是本身类父类(父类的父类)和接口的一个对象
25 System.out.println(t1 instanceof A); // true
26 System.out.println(t2 instanceof D); // true
27 System.out.println("============");
28
29 // 测试3:所有对象都是object
30 System.out.println(t1 instanceof Object); // true
31 System.out.println(t2 instanceof Object); // true
32 System.out.println("============");
33
34 // 测试4:凡是null相关的都是false
35 System.out.println(null instanceof Object); // false
36 System.out.println(null instanceof B); // true
37 System.out.println("============");
38
39 // class.isInstance(obj):这个对象能不能被转化为这个类
40 // 测试1:一个对象是本身类的一个实例
41 System.out.println(C.class.isInstance(t1)); // true
42 System.out.println("============");
43
44 // 测试2:一个对象能被转化为本身类所继承的类(父类的父类)和实现的接口(接口的父接口)强转
45 System.out.println(A.class.isInstance(t1)); // true
46 System.out.println(B.class.isInstance(t2)); // true
47 System.out.println("============");
48
49 // 测试3:所有对象都能被Object强转
50 System.out.println(Object.class.isInstance(t1)); // true
51 System.out.println(Object.class.isInstance(t2)); // true
52 System.out.println("============");
53
54 // 测试4:凡是和null相关的都是false
55 System.out.println(Object.class.isInstance(null)); // false
56 System.out.println(D.class.isInstance(null)); // false
57
58
59 }
60 }

运行结果:

 1 true
2 ============
3 true
4 true
5 ============
6 true
7 true
8 ============
9 false
10 false
11 ============
12 true
13 ============
14 true
15 true
16 ============
17 true
18 true
19 ============
20 false
21 false

参考/补充:

参考--Java中的instanceof和isInstance基础讲解

https://www.2cto.com/kf/201803/732851.html

补充--菜鸟教程-- instanceof 运算符

https://www.runoob.com/java/java-operators.html

instanceof和isInstance的区别的更多相关文章

  1. instanceof 和isinstance的区别

    class A {} class B extends A {} class C extends A {} public class Test { public static void main(Str ...

  2. Java中instanceof和isInstance区别详解

     一次性搞定instanceof和isInstance,instanceof和isInstance长的非常像,用法也很类似,先看看这两个的用法: obj.instanceof(class) 也就是说这 ...

  3. Java中instanceof和isInstance的具体区别

    Java中instanceof和isInstance的具体区别 在Think in Java泛型这一章遇到这个问题,一些博客模糊提到了isInstance是instanceof的动态实现,查阅文档参考 ...

  4. instanceof和isInstance(Object obj) 和isAssignableFrom(Class cls)的区别和联系

    instanceof和isInstance(Object obj) 和isAssignableFrom(Class cls)的区别和联系          编程的时候可能会遇到一个不知道它属于哪个类的 ...

  5. java instanceof和isInstance的关系 精析

      1.instanceof 用途:判断这个object对象是不是这种Class类型. 语法: boolean result = object instanceof Class; 用法: 判断obje ...

  6. java 中 instanceof 和 isInstance区别

    两者的功能是等价的.区别: 1.instanceof 是一个操作符(类似new, ==等): 使用方法: if (ins instanceof String) { //logic } 2.isInst ...

  7. 【Java 基础】 instanceof和isInstance区别详解

    obj instanceof class 也就是说这个对象是不是这种类型, 1.一个对象是本身类的一个对象 2.一个对象是本身类父类(父类的父类)和接口(接口的接口)的一个对象 3.所有对象都是Obj ...

  8. instanceof、 isinstance 与 isAssignableFrom的区别

    instanceof运算符 只被用于对象引用变量,检查左边的被测试对象 是不是 右边类或接口的 实例化.如果被测对象是null值,则测试结果总是false. 形象地:自身实例或子类实例 instanc ...

  9. instanceof、isInstance、isAssignableFrom的区别

    https://stackoverflow.com/questions/3949260/java-class-isinstance-vs-class-isassignablefrom 1. MyCla ...

随机推荐

  1. Linux 挂载,卸载光盘

    首先我们点击虚拟机 点击设置 选择CD 接着我们将设备状态两个勾都勾选,并且ISO映像文件选择我们需要挂载的光盘 点击了确定之后,我们到centos7的命令行下 1,创建挂载目录 mkdir /mnt ...

  2. Spark流式状态管理(updateStateByKey、mapWithState等)

    通常使用Spark的流式框架如Spark Streaming,做无状态的流式计算是非常方便的,仅需处理每个批次时间间隔内的数据即可,不需要关注之前的数据,这是建立在业务需求对批次之间的数据没有联系的基 ...

  3. AcWing 1194. 岛和桥

    \(f[s][i][j]\) 表示一条有向路径(不经过重复点),当前路径点集合为 \(s\),最后两个点是 \(j\) → \(i\) 的最大价值 \(g[s][i][j]\) 类似,不过是方案数. ...

  4. (干货)构建镜像之Dockerfile

    Dockerfile是一个文本文件,记录了镜像构建的所有步骤. 饭提示:学习Dockerfile构建镜像,就是在学习Dockerfile文件构建的命令+shell脚本语句 Dockerfile简单介绍 ...

  5. ado.net使用sqlparameter的方式

    使用sqlparameter的方式,最终执行的sql语句 exec sp_executesql N'select top 1 ID,ZhangHu,MiMa,RID,ShiJian,EndTime,I ...

  6. USB接口禁用小工具v1.0.1

    由论坛用户原创制作的一个USB接口工具, 可选择手动/自动启动或者禁止启动模式, 开启禁止启动模式后USB接口将关闭识别功能, 有效防止U盘设备侵入,对于机房实验室设施来说相当管用. 下载地址:htt ...

  7. Mybatis(二)--SqlMapConfig.xml配置文件

    一.简介 SqlMapConfig.xml是Mybatis的全局配置文件,我们在写mybatis项目时,在SqlMapConfig.xml文件中主要配置了数据库数据源.事务.映射文件等,其实还有很多配 ...

  8. [水题日常]Luogu1113 杂务

    这几天又在颓. 我的blog难度目前还比较低,主要面向像我这样子的新手(当然内容也会尽量讲得具体清楚一些)x 如果有错误还请指出~ 写完随笔之后才去翻了一下这题题解之后才注意到这题是有序的 QAQ完全 ...

  9. pytest接口测试轻松入门

    通过Postman请求结果如下图: 那我们怎么用pytest进行测试呢? 在接口测试,我们要用到requests包,实现代码如下: import pytest import allure import ...

  10. matplotlib的学习12-Subplot 多合一显示

    import matplotlib.pyplot as plt # matplotlib 是可以组合许多的小图, 放在一张大图里面显示的. 使用到的方法叫作 subplot. plt.figure() ...