instanceof是Java的一个二元操作符(运算符)

instanceof是Java的一个二元操作符(运算符),也是Java的保留关键字。它的作用是判断其左边对象是否为其右边类的实例,返回的是boolean类型的数据。用它来判断某个对象是否是某个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

    }
  }

原文地址:https://www.cnblogs.com/mark5/p/10995867.html

时间: 2024-08-04 20:58:08

instanceof是Java的一个二元操作符(运算符)的相关文章

paip.操作符重载的缺失 Java 的一个大缺点

#----操作符重载的作用 1.提升用户体验 操作符重载..可以让代码更加自然.... 2.轻松实现代码代码移植 例如   java代码会直接移植到c#代码里面.. #---为什么说操作符重载的缺失是个大的缺点?? 因为中个,不能轻松实现代码代码移植 作者 老哇的爪子 Attilax 艾龙,  EMAIL:[email protected] 转载请注明来源: http://blog.csdn.net/attilax #----java里面的 操作符重载 Java除了String重载了+之外,不支

Java的基本数据类型与运算符

基本数据类型 基本数据类型 1 byte(字节)= 8 bit(位) 整型.byte(8位) short(16位) int(32位) long(64位) 浮点型.float(单精度.32位) double(双精度.64位) 在数值后面添加F表示float类型,不加表示double类型 如:3.14代表double,3.14F代表float 字符型.char(16位) ps:Java中char是16位,也就是占2个字节, C中char是8位,也就是占1个字节 布尔型.boolean(1位) 类型转

java基础之数据类型/基本运算符

概述 java语言从1995年sun公司推出发展至今已经有22个年头,现在已经是使用最多的语言之一了.java又是一个比较容易入门的语言,我第一门接触的语言就是java.java发展.java的核心就是面向对象编程,其中多态.继承.封装来体现java的面向对象编程思想,还有java中的集合.流.反射等等.今天我会从最基础的数据类型和基本运算符开始说起:虽然说java的底层是由c去实现的,不过java和c还是有很多的不同也可以相互调用也就是JNI,我们会在以后去说去. 数据类型 在java中的数据

由“Java中一个字符占两个字节”引起

起因 Java中一个字符占两个字节,这和C/C++稍有区别.在C/C++中我们可以通过sizeof运算符方便地知道某个变量类型或对象的大小,那在Java中又如何? 问题出现 Java为什么没有提供sizeof运算符? 要回答这个问题,我们可以从另一个角度来看,那就是为什么C/C++中提供sizeof运算符.这就让人忍不住想到C/C++和Java在内存管理上的区别. 在C中,内存分配和释放的任务交给了程序员,当我们尝试用malloc为某个对象分配一块堆内存时,一个无法逃避的问题是,这个即将被创建的

java的一个爬虫

进行抓取页面,我看了一下人家的教程,一般要用到htmlparser用来解析html得到一个网页的相关链接,用httpclient抓取网页数据, 下面是一我写的spider类 package com.openzone.search.spider; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.DataOutputStream; import java.io.File; import java

Java的按位操作符

本文参考:Java的位操作符 Java的位操作符用来操作整数基本数据类型中的单个"比特"(bit),即代进制位.而我们知道比特就是0和1,那么,位操作就是对这些数据进行基本的操作.如果基本类型是char.byte或者short类型的数值进行移位处理,那么会转化成int类型,再进行移位的处理 Java的按位操作符 按位操作符会对两个参数对应的位执行布尔代数运算,并最终生成一个结果.这个操作符有与(&).非(~).或(|).异或(^).我们知道单位"比特"(bi

JAVA编程思想(2) - 操作符(二)

5. 直接常量 -一般来说,如果程序里使用了"直接常量",编译器可以准确的知道要生成什么样的类型,但有时候却是模棱两可的.这时候需要我们对编译器进行适当的"指导" -直接常量后面的后缀字符标示了它的类型. -指数记数法:e代表"10的幂次" -注意如果编译器能够正确的识别类型,就不必在数值后附加字符,例如语句: float f4 = 200; 不存在含糊不清的地方,所以200后面不需要加L,但是对于:float f4 = 1e-43f; 编译器通

学了编译原理能否用 Java 写一个编译器或解释器?

16 个回答 默认排序? RednaxelaFX JavaScript.编译原理.编程 等 7 个话题的优秀回答者 282 人赞同了该回答 能.我一开始学编译原理的时候就是用Java写了好多小编译器和解释器.其实用什么语言来实现编译器并不是最重要的部分(虽然Java也不是实现编译器最方便的语言),最初用啥语言都可以. 我在大学的时候,我们的软件工程和计算机科学的编译原理课的作业好像都是可以用Java来写的.反正我印象中我给这两门课写的作业都是用的Java. ===================

java基础(2)--运算符详解

java基础(2)--运算符详解 自增自减规则 自增自减就是常用的 a = a++ 或者 a = ++a;前者是后缀式,先把a赋值给a,再加一:后者是后缀式,先加一,在赋值给a;而且a++,++a并不是原子操作,在当线程环境下并不会出错,当放在多线程下时,就会出现数据错误的问题. public class Test01 { private static int a = 0; private static int b = 0; private static AtomicInteger atomic