作者名:编程界明世隐
简介:CSDN博客专家,从事软件开发多年,精通Java、JavaScript,博主也是从零开始一步步把学习成长、深知学习和积累的重要性,喜欢跟广大ADC一起打野升级,欢迎您关注,期待与您一起学习、成长、起飞!
很多Java初学者问我,新手明明很用心、很努力学习的Java知识,转头又忘记了,很让人犯愁,小白如何能够快速成长、成为大牛呢?
其实要成为大神的技巧只有一个:“多学多练”,于是明哥就整理了比较典型的练习实例,通过练习能够快速提升编码技巧和熟练度,让你在成为大佬的路上一去不复返(切记要亲手练习哦)!
✪ Java小白入门200例系列目录索引
◄上一篇 88.Java多态
►下一篇待更新
instanceof 是 Java 的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回 boolean 的数据类型。
语法格式:
boolean result = obj instanceof Class
其中,obj 是一个对象,Class 表示一个类或接口。obj 是 class 类(或接口)的实例或者子类实例时,结果 result 返回 true,否则返回 false。
obj 必须为引用类型,不能是基本类型,否则/编译不通过。
package demo.demo89; public class Instanceof { public static void main(String[] args) { int i = 0; System.out.println(i instanceof Integer);//编译不通过 } }
当 obj 为 null 时,直接返回 false,因为 null 没有引用任何对象。
package demo.demo89; public class Instanceof { public static void main(String[] args) { System.out.println(null instanceof Integer); System.out.println(null instanceof String); System.out.println(null instanceof Object); } }
运行结果:
false
false
false
obj 为 Class 类的实例对象,返回true。
package demo.demo89; public class Student { private String name; public Student(String name){ this.name=name; } }
package demo.demo89; public class Instanceof { public static void main(String[] args) { Student stu = new Student("小姐姐"); boolean b = stu instanceof Student; System.out.println(b); } }
运行:
true
obj 为 Class 接口的实现类的实例对象,返回true。
package demo.demo89; //接口 public interface A { }
package demo.demo89; //实现类 public class B implements A { }
package demo.demo89; public class Test { public static void main(String[] args) { B b = new B(); boolean bool = b instanceof A; System.out.println(bool); } }
运行:
true
obj 为 Class 类的直接或间接子类。
package demo.demo89; //父类Person public class Person { }
package demo.demo89; //Person的子类Man public class Man extends Person{ }
package demo.demo89; //Man的子类Child public class Child extends Man { }
package demo.demo89; public class Test { public static void main(String[] args) { Man man = new Man(); //Man是Person的直接子类 System.out.println(man instanceof Person); Child child = new Child(); //Child是 Man的直接子类 System.out.println(child instanceof Man); //Child是 Person的间接子类(孙子类) System.out.println(child instanceof Person); } }
运行结果:
true
true
true
直接子类和间接子类用instanceof检查,都会返回true。
编译器会检查 obj 能否转换成右边的 class 类型,如果不能转换则直接报错,如果不能确定类型,则通过编译。
package demo.demo89; import java.util.List; public class Test { public static void main(String[] args) { Man man = new Man(); //Man是Person的直接子类 System.out.println(man instanceof Person); //System.out.println(man instanceof String); // 编译报错 System.out.println(man instanceof List); // false } }
man instanceof List 编译器也无法确定true还是false,只能运行的时候返回了false。
这节总结了“ Java instanceof 关键字 ”,希望能对大家有所帮助,请各位小伙伴帮忙 【点赞】+【收藏】+ 【评论区打卡】, 如果有兴趣跟小明哥一起学习Java的,【关注一波】不迷路哦。
评论区打卡一波让我知道你,明哥会持续关注你的学习进度哦!
✪ Java小白入门200例系列目录索引
◄上一篇 88.Java多态
►下一篇待更新
1.Java小游戏系列(俄罗斯方块、飞机大战、植物大战僵尸等)
2.JavaWeb项目实战(图书管理、在线考试、宿舍管理系统等)
3.JavaScript精彩实例(飞机大战、扫雷、贪吃蛇、验证码等)
4.Java小白入门200例
5.从零学Java、趣学Java、以王者荣耀角度学Java