1.instanceof

  用途:判断这个object对象是不是这种Class类型。

  语法:

boolean result = object instanceof Class;

  用法:

  判断object对象是否是class类(本身类);

  判断object对象是否是本身类所继承的类(父类);

  判断object对象是否是本身类所实现的接口;

  所有的对象都是Object类;

  凡是null相关的都是false。

  示例:

  共用代码

/*** 机器* @explain* @author Marydon* @creationTime 2018年10月17日上午9:32:01* @version 1.0* @since* @email marydon20170307@163.com*/
class Machine {}/*** 电脑* @explain* @author Marydon* @creationTime 2018年10月17日上午9:32:14* @version 1.0* @since* @email marydon20170307@163.com*/
class Computer extends Machine {}/*** usb接口* @explain* @author Marydon* @creationTime 2018年10月17日上午9:32:27* @version 1.0* @since* @email marydon20170307@163.com*/
interface Usb {}/*** 鼠标* @explain* @author Marydon* @creationTime 2018年10月17日上午9:32:39* @version 1.0* @since* @email marydon20170307@163.com*/
class Mouse implements Usb{}/*** 测试instanceof与isInstance()* @explain* @author Marydon* @creationTime 2018年10月17日上午9:25:15* @version 1.0* @since* @email marydon20170307@163.com*/
public class TestInstance {// main方法
}

  测试

public static void main(String[] args) {Computer computer = new Computer();Mouse mouse = new Mouse();System.out.println("==============instanceof阶段测试1==============");// 判断object对象是否是class类(本身类)System.out.println(computer instanceof Computer);// 判断object对象是否是本身类所继承的类(父类)System.out.println(computer instanceof Machine);// System.out.println(computer instanceof Mouse);// 编译报错:Incompatible conditional operand types Computer and Mouse// 判断object对象是否是本身类所实现的接口System.out.println(mouse instanceof Usb);// System.out.println(mouse instanceof Machine);// 编译报错System.out.println("==============instanceof阶段测试2==============");// 所有的对象都是Object类System.out.println(computer instanceof Object);System.out.println(mouse instanceof Object);System.out.println("==============instanceof阶段测试3==============");// 凡是null相关的都是falseSystem.out.println(null instanceof Object);// falseSystem.out.println(null instanceof Computer);// false
}

2.isInstance

  用途:判断这个object对象能不能被转化为这个Class类。

  语法:

boolean result = Class.class.isInstance(object);

  用法:

  判断object对象能否转化成class类(本身类);

  判断object对象能否转化成本身类所继承的类(父类);

  判断object对象能否转化成本身类所实现的接口;

  所有的对象都转换成Object类;

  凡是null相关的都是false。

  示例:

public static void main(String[] args) {Computer computer = new Computer();Mouse mouse = new Mouse();System.out.println("==============isInstance阶段测试1==============");// 判断object对象能否转化成class类(本身类)System.out.println(Computer.class.isInstance(computer));// 判断object对象能否转化成本身类所继承的类(父类)System.out.println(Machine.class.isInstance(computer));// 明显不能这样比较,但编译通过System.out.println(Mouse.class.isInstance(computer));// false// 判断object对象能否转化成本身类所实现的接口System.out.println(Usb.class.isInstance(mouse));// 明显不能这样比较,但编译通过System.out.println(Machine.class.isInstance(mouse));// falseSystem.out.println("==============isInstance阶段测试2==============");// 所有的对象都转换成Object类System.out.println(Object.class.isInstance(computer));System.out.println(Object.class.isInstance(mouse));System.out.println("==============isInstance阶段测试3==============");// 凡是null相关的都是falseSystem.out.println(Object.class.isInstance(null));// falseSystem.out.println(Computer.class.isInstance(null));// false
}  

3.区别与联系

  区别:

  instanceof是一个操作符,isInstance是Class类的一个方法;

  instanceof表示对象A是不是B类型,isInstance表示对象A是否能强转成B类型;

  instanceof 编译器在编译时需要知道类的具体类型,isInstance 编译器在运行时才进行类型检查,故可用于反射,泛型中。

  联系:

  isInstance()是 Java 语言 instanceof 运算符的动态等效方法。

  示例:

public static void main(String[] args) {System.out.println("==============instanceof和isInstance==============");// 区别// System.out.println(1 instanceof String);// 编译不通过System.out.println(String.class.isInstance(1));// false// 联系System.out.println("Marydon" instanceof String); System.out.println(String.class.isInstance("Marydon"));
}

  

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

相关推荐:

  • 个人主页

转载于:https://www.cnblogs.com/Marydon20170307/p/9803218.html

java instanceof和isInstance的关系 精析相关推荐

  1. 高级JAVA码农必须搞清楚它们的区别:instanceof、isInstance、isAssignableFrom

    转载自 高级JAVA码农必须搞清楚它们的区别:instanceof.isInstance.isAssignableFrom instanceof.isInstance.isAssignableFrom ...

  2. java instanceof 区别_Java 中 instanceof 和 isInstance 的区别

    今天百度了一下 instanceof 和 isInstance() 的区别,结果不理想.大多数人先贴一段测试代码,然后分别解释它们的用法,根本不是解释它们之间的区别. 本来想快点搜一下看个结论,不料还 ...

  3. java is instance of_详谈Java中instanceof和isInstance的区别

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

  4. Java Instanceof

    Java Instanceof Instanceof是一个非常简单的运算符,前一个操作通常是一个引用类型的变量,后一个操作数通常是一个类(也可以是接口,可以把接口理解成一种特殊的类),它用于判断前面的 ...

  5. Java SE 027 String类源代码深析

    Java SE 027 String类源代码深析 前言:此笔记为圣思园张龙老师讲述的java视频课程笔记,自己看视频学习时记录的,用于积累与复习,在此分享给学习软件编程的兄弟姐妹们,以供参考. 1.e ...

  6. instanceof 和isInstance

    instanceof 和 isInstance 一.instanceof 关键字 二.isInstance()方法 一.instanceof 关键字 instanceof : java的一个二元运算符 ...

  7. 子网划分详解与子网划分实例精析

    目录 文章目录 子网划分理论基础 为什么进行子网划分 知识点 子网划分常见问题 子网划分实例精析 C类子网划分实例分析 已知网络地址和子网掩码,求子网划分结果 已知网络地址和子网掩码求子网划分 已知i ...

  8. Java继承时构造函数的关系

    Java继承时构造函数的关系,先来一道笔试题给大家看看: 在继承中,关于构造方法的说明,下列说法错误的是() A.子类无条件的继承父类的无参构造方法, B.子类可以引用父类中的有参构造方法,使用sup ...

  9. java中类与类的关系_Java中类与类的关系

    在java中类和类的关系大致分三种:泛化.关联.依赖. 1. 泛化(Generalization) "XX是一个XX"关系(is a),通常使用的关键词为 extends.impl ...

  10. Java instanceof关键字详解

    严格来说 instanceof 是 Java 中的一个双目运算符,由于它是由字母组成的,所以也是 Java 的保留关键字.在 Java 中可以使用 instanceof 关键字判断一个对象是否为一个类 ...

最新文章

  1. 使用Lombok优化代码
  2. php与js的关系,Php与Js的交互
  3. 用 Flask 来写个轻博客
  4. Page.ClientScript.RegisterStartupScript() 方法与Page.ClientScript.RegisterClientScriptBlock() 方法...
  5. 你正在用左脑还是右脑思考,请测试下就清楚了。
  6. SOA对微服务的残余影响
  7. oracel Pipelined pipe row的用法
  8. SpringBoot启动yaml报错
  9. Widows核心编程第一章:错误处理
  10. 吴恩达深度学习 —— 2.18(选修)逻辑回归损失函数的解释
  11. tar打包/解包用法
  12. 空值的日期类型和update 中的null
  13. js使用html5,JS使用H5实现图片预览功能
  14. Smart3D倾斜摄影建模教程
  15. 零基础小白深度学习入门篇
  16. python any函数_python中的any函数是什么?如何使用any函数?
  17. 短信通知接口json报文开发设计总结
  18. Java Web 开发后续(二)
  19. 软件测试最容易陷入的28个误区
  20. QGIS进行坐标转换

热门文章

  1. python的UML类图自动生成工具--pyreverse安装和使用
  2. Xbox One 游戏欣赏: 麦克斯-兄弟魔咒
  3. asp.net分页方法
  4. 【转】Data truncation: Truncated incorrect DOUBLE value:Mysql Update时
  5. 一个PHP程序员应该掌握的10项技能!【更新】
  6. struts2 学习01
  7. Ubuntu 小白起步
  8. HDOJ 1755 - A Number Puzzle 排列数字凑同余,状态压缩DP
  9. 【vscode】vscode + vue项目实战记录
  10. VSCode中使用vue项目ESlint验证配置