Java小白入门200例89之Java instanceof 关键字

作者简介

作者名:编程界明世隐
简介:CSDN博客专家,从事软件开发多年,精通Java、JavaScript,博主也是从零开始一步步把学习成长、深知学习和积累的重要性,喜欢跟广大ADC一起打野升级,欢迎您关注,期待与您一起学习、成长、起飞!

Java小白入门200例89之Java instanceof 关键字

引言

很多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 类型,如果不能转换则直接报错,如果不能确定类型,则通过编译。
Java小白入门200例89之Java instanceof 关键字

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

上一篇:instanceof和类型转换


下一篇:Java面向对象之instanceof和类型转换