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. 推荐系统实践 0x0c FM系列

    逻辑回归(LR) 在介绍FM系列之前,我想首先简单介绍一下逻辑回归.通常来说,逻辑回归模型能够综合利用更多的信息,如用户.物品.上下文等多种不同的特征,生成更为全面的结果.另外,逻辑回归将推荐问题看成 ...

  2. SELECT 1,2,3...的含义及其在SQL注入中的用法

    首先,select 之后可以接一串数字:1,2,3-只是一个例子,这串数字并不一定要按从小到大排列,也不一定从1开始,这串数字的值和顺序是任意的,甚至可以是重复的,如:11,465,7461,35 或 ...

  3. Flask+MySQL+Redis的Docker配置

    Docker配置了好多天,昨天晚上终于把碎遮项目的Docker打包完成了,后面会继续完善项目代码,把稳定版本打包后推送到DockerHub上. 网上关于Docker配置的文章很多,但大部分都是复制粘贴 ...

  4. flask中SQLAlchemy学习

    ------------------------------------2019-08-22 17:53:54更新------------------------------ SQLALchemy实在 ...

  5. Scrum 冲刺第二天

    一.每日站立式会议 1.会议内容 1)进行每日工作汇报 张博愉: 昨天已完成的工作:制定测试计划.博客编写 今日工作计划:测试mappe里的接口 工作中遇到的困难:对测试接触得较少 张润柏: 昨天已完 ...

  6. STL-Vector容量问题:

    1.clear,erase ,pop_back() 函数只删除对象,并没有释放vec中的内存,若对象是指针还需要delete:2.在erase,clear,pop_back()删除对象的后,size改 ...

  7. sql语句执行次序

    from→on→join→where→group by→having→select→distinct→order by→limit

  8. 初入Nginx--配置篇

    Nginx的主配置文件为/path/to/nginx/nginx.conf.Nginx.conf的配置文件结构主要由以下几个部分组成: ..... events{ .... } http{ .... ...

  9. Mysql锁机制--悲观锁和乐观锁

    1. 悲观锁简介 悲观锁(Pessimistic Concurrency Control,缩写PCC),它指的是对数据被外界修改持保守态度,因此,在整个数据处理过程中, 将数据处于锁定状态.悲观锁的实 ...

  10. Unity射击实例讲解—主角创建

    前言: 经过三分钟的思考决定换个标题,这两天其实游戏制作进度推了大半了,加入了许多自我创作的素材,不过想一想用来讲解的实例不该这么花哨,决定还是参照我的一些教材做一些简单的示例不然要说的东西太多,本人 ...