instanceof 是 Java 语言中的一个二元操作符,和 = =、>、< 等是同一类元素。由于 instanceof

是由字母组成的,所以它也是Java的保留关键字。Java中 instance of 运算符用法是学习instance of 运算符的关键所在。

1.instanceof 的作用是测试它左边的对象是否是它右边类的实例,然后返回一个 boolean 类型的

instanceof。请看下面的代码。

String s = "I AM an Object!";

boolean isObject = s instanceof Object;

上述代码声明了一个 String 型对象引用,指向一个 String 型对象,然后用 instanceof 来测试它所指向的对象是否是 Object

类的一个实例。因为这是真的,所以返回结果 true,也就是 isObject 的值为 true。

比如我们在编写一个处理账单系统时,其中有如下 3 个类。

public class Bill {//省略细节}

public class PhoneBill extends Bill {//省略细节}

public class GasBill extends Bill {//省略细节}

在具体处理程序中有一个专门的方法来接受一个 Bill 类型的对象,这样可以计算金额。假设两种账单的计算方法不同,而传入的 Bill

对象可能是两种中的任何一种,因此需要使用 instanceof 来判断。

public double calculate(Bill bill) {

if (bill instanceof PhoneBill) {

//计算电话账单

}

if (bill instanceof GasBill) {

//计算燃气账单

}

...

}

这样就可以用一个方法处理两种子类。

2.然而,这种做法通常被认为是没有好好利用面向对象中的多态性。其实上面的功能要求用方法重载完全可以实现,这是面向对象变成应有的做法,避免回到结构化编程模式。只要提供两个名字和返回值都相同,接受参数类型不同的方法就可以了:

public double calculate(PhoneBill bill) {

//计算电话账单

}

public double calculate(GasBill bill) {

//计算燃气账单

}

所以,使用instanceof在绝大多数情况下并不是推荐的做法,应当好好利用多态。

3.同时也可以用instance of 来判断某个对象是否是某个Class类的实例。

用法:

boolean result = object instanceof class

参数:

result :boolean类型。

object :必选项。任意对象表达式。

class:必选项。任意已定义的对象类。

说明:

如果该object 是该class的一个实例,那么返回true。如果该object

不是该class的一个实例,或者object是null,则返回false。

例子:

package com.instanceoftest;

interface A { }

class B implements A { } //B是A的实现

class C extends B { } //C继承B

class D { }

class instanceoftest {

public static void main(String[] args) {

A a = null;

B b = null;

boolean res;

System.out.println("instanceoftest test case 1: ------------------");

res = a instanceof A;

System.out.println("a instanceof A: " + res); // a instanceof A:false

res = b instanceof B;

System.out.println("b instanceof B: " + res); // b instanceof B: false

System.out.println("\ninstanceoftest test case 2: ------------------");

a = new B();

b = new B();

res = a instanceof A;

System.out.println("a instanceof A: " + res); // a instanceof A:true

res = a instanceof B;

System.out.println("a instanceof B: " + res); // a instanceof B:true

res = b instanceof A;

System.out.println("b instanceof A: " + res); // b instanceof A:true

res = b instanceof B;

System.out.println("b instanceof B: " + res); // b instanceof B:true

System.out.println("\ninstanceoftest test case 3: ------------------");

B b2 = new C();

res = b2 instanceof A;

System.out.println("b2 instanceof A: " + res); // b2 instanceof A:true

res = b2 instanceof B;

System.out.println("b2 instanceof B: " + res); // b2 instanceof A:true

res = b2 instanceof C;

System.out.println("b2 instanceof C: " + res); // b2 instanceof A:true

System.out.println("\ninstanceoftest test case 4: ------------------");

D d = new D();

res = d instanceof A;

System.out.println("d instanceof A: " + res); // d instanceof A:false

res = d instanceof B;

System.out.println("d instanceof B: " + res); // d instanceof B:false

res = d instanceof C;

System.out.println("d instanceof C: " + res); // d instanceof C:false

res = d instanceof D;

System.out.println("d instanceof D: " + res); // d instanceof D:true

}

}

以上就是在Java语言中,instead

of运算符的用法实例,我们可以仔细剖析,认真求证,学习其中的精髓。然后,结合本站的关系运算符教程里对instead

of运算符的详细讲解,一定能够完全掌握instead of 运算符的相关知识!

Java instead of 用法_实例讲解instance of 运算符用法相关推荐

  1. java自旋锁使用_实例讲解Java 自旋锁

    一直以来不是怎么清楚自旋锁,最近有点时间,好好的学习了一下: 所谓的自旋锁在我的理解就是多个线程在尝试获取锁的时候,其中一个线程获取锁之后,其他的线程都处在一直尝试获取锁的状态,不会阻塞!!!那么什么 ...

  2. java pdf添加图章_实例讲解Java处理PDF图章的方法

    图章(印章)是一种在合同.票据.公文等文件中表明法律效应.部门机关权威的重要指示物,常见于各种格式的文件.文档中.对于纸质文档可以手动盖章,但对于电子文档,则需要通过特定的方法来实现.本篇文档分享通过 ...

  3. php中的ltrim,PHP中ltrim()函数的用法与实例讲解

    PHP中ltrim()函数的用法与实例讲解 PHP ltrim() 函数 实例 移除字符串左侧的字符: $str = "Hello World!"; echo $str . &qu ...

  4. 编程python爬取网页数据教程_实例讲解Python爬取网页数据

    一.利用webbrowser.open()打开一个网站: >>> import webbrowser >>> webbrowser.open('http://i.f ...

  5. core 实例化接口_实例讲解Springboot整合MongoDB进行CRUD操作的两种方式

    1 简介 Springboot是最简单的使用Spring的方式,而MongoDB是最流行的NoSQL数据库.两者在分布式.微服务架构中使用率极高,本文将用实例介绍如何在Springboot中整合Mon ...

  6. python 系统管理_实例讲解python用户管理系统

    本文主要为大家分享一篇python用户管理系统的实例讲解,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧,希望能帮助到大家. 自定义函数+装饰器,每一个模块写的一个函数 很多地方能用装 ...

  7. python求三个整数最大值_实例讲解Python中整数的最大值输出

    实例讲解Python中整数的最大值输出 在Python中可以存储很大的值,如下面的Python示例程序: x = 1000000000000000000000000000000000000000000 ...

  8. redis序列化_实例讲解Springboot以Template方式整合Redis及序列化问题

    1 简介 之前讲过如何通过Docker安装Redis,也讲了Springboot以Repository方式整合Redis,建议阅读后再看本文效果更佳: (1) Docker安装Redis并介绍漂亮的可 ...

  9. java 内部类 加载_举例讲解Java的内部类与类的加载器

    内部类 class A { //Inner1 要在 A 初始化后 才能使用,即要被A的对象所调用 class Inner1 { int k = 0; // static int j = 0; //A加 ...

  10. python中能够处理的最大整数是_实例讲解Python中整数的最大值输出

    在Python中可以存储很大的值,如下面的Python示例程序: x = 10000000000000000000000000000000000000000000; x = x + 1 print ( ...

最新文章

  1. java异常处理之throw, throws,try和catch
  2. caffe web demo 搭建
  3. 爬虫入门五(Phantomjs和selenium)
  4. matlab工具箱作用简介,Matlab各工具箱功能简介(部分)
  5. Java架构师成长之道之Java数据存储
  6. 【VRPSD】基于matlab蚁群算法求解运钞车路径规划问题【含Matlab源码 1511期】
  7. Kettle Spoon入门学习
  8. win10激活时间(win10激活时间查询)
  9. python gps显示_MicroPython-GPS教程之TPYBoardv702控制5110显示当前经纬度
  10. 【托业】【新托业TOEIC新题型真题】学习笔记11-题库六-P7
  11. L44. 通配符匹配
  12. differential privacy 学习笔记(一)
  13. 【程序设计】浅拷贝与深拷贝
  14. java线性规划计算最优解算法
  15. PyQT从入门到出门-001
  16. 研究生学人工智能有未来吗?点击快速了解就业前景
  17. odroidxu4linux,2019年值得期待的5个树莓派替代品
  18. 使用74LS161设计任意进制计数器
  19. 电磁兼容入门篇之基础知识
  20. Kids and COVID: why young immune systems are still on top

热门文章

  1. 师从施一公,4年8篇CNS,作为西湖大学博士后,她又以一作发了Science
  2. python基本写法_python操作文件常用写法
  3. 合并果子问题(贪心算法)
  4. Vue/ElementUI上传文件检验
  5. 国内域名国内服务器,不备案解决80端口不开放方法
  6. Container is restarting, wait until the container is running
  7. sublimetext text3比较两个文档的不同
  8. OpenGL 视椎体剔除算法
  9. 参与者模式(Actor model)
  10. ZigBee模块通信协议的树形拓扑组网结构