文档详情

两千字讲明白java中instanceof关键字的使用!.docx

发布:2025-05-14约2.21千字共5页下载文档
文本预览下载声明

两千字讲明白java中instanceof关键字的使用!

在过往的内容中,我们讲了不少的Java关键字,比如final、static、this、super等等,Java中的关键字非常之多,下图是整理的关键字集合

而我们今天要学习的就是其中的instanceof关键字!

instanceof的定义

instanceof运算符是用来在运行时判断对象是否是指定类及其父类的一个实例(包括接口),因为比较的是对象,故不能应用于基本数据类型中!

其基本语法:

(object)instanceof(type)

咱们直接上一段代码,感受一下instanceof的魅力吧

publicclassTest{

publicstaticvoidmAIn(String[]args){

Dogd=newDog();

System.out.println(dinstanceofAnimal);

classAnimal{

publicvoidmethod1(){};

classDogextendsAnimal{

输出:

这段代码满足对象是否是指定类及其父类的一个实例,所以才返回true。其实,这里面也涉及到Java中的is-a关系,在这里做一下小小的知识延伸吧

is-a、has-a、is-like-a

在Java中类与类之间存在继承与被继承关系,类与接口之间存在着实现与被实现关系,这些关系之间用了is-a、has-a、is-like-a来贴切的形容。

所谓is-a就子类属于唯一一个父类,因为Java是单继承

publicclassAnimal{

publicvoidmethod1(){};

publicclassDogextendsAnimal{//DogisaAnimal

has-a

所谓has-a就是前者拥有后者

publicclassA{//AhasaB

privateBb;

publicclassB{

is-like-a

所谓is-like-a就是类实现接口的过程,类之所以能实现接口,是因为这个类会拥有接口抽象的某种行为,也就代表着他们之间存在着相似之处。

publicinterfaceI{

publicvoidmethod1();

publicclassAimplementsI{//AislikeaI

publicvoidmethod1(){

那么这时候,我们应该有这样一个思考:在instanceof的定义中的那段代码,是证明了一个类对象属于它或者它父类的实例,那么如果一个类实现了一个接口,那么用instanceof去判断会返回trueorfalse呢?,带着疑问,我们来看如下这段代码:

publicclassTest{

publicstaticvoidmain(String[]args){

Dogd=newDog();

System.out.println(dinstanceofAnimal);

System.out.println(dinstanceofActive);

//反例,输出为false

System.out.println(dinstanceofOther);

classAnimal{

publicvoidmethod1(){};

classDogextendsAnimalimplementsActive{

@Override

publicvoidrun(){

System.out.println(小狗子爱奔跑

interfaceActive{

voidrun();

interfaceOther{

voidmethod();

输出:

false

由此可见,在接口中同样适用,所以赶紧回去把开头的话加上一个(包括接口)去,自我怀疑,自我验证,自我修改,成功闭环,哈哈哈!

instanceof的用法

了解了instanceof之后,我们应该渴望知道它的具体用法!通常,我们是这样使用instanceof操作符的。小二,上代码!

//JDK8中

//先判断类型

if(objinstanceofString){

//然后强制转换

Strings=(String)obj;

//然后才能使用

上面的代码

显示全部
相似文档