作者简介
作者名:编程界明世隐
简介: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。
实例1
obj 必须为引用类型,不能是基本类型,否则/编译不通过。
package demo.demo89;
public class Instanceof {
public static void main(String[] args) {
int i = 0;
System.out.println(i instanceof Integer);//编译不通过
}
}
实例2
当 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
实例3
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
实例4
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
实例5
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