Java Instanceof

Instanceof是一个非常简单的运算符,前一个操作通常是一个引用类型的变量,后一个操作数通常是一个类(也可以是接口,可以把接口理解成一种特殊的类),它用于判断前面的对象是否是后面的类或其子类,实现类的实例。如果是,返回true,否则,返回false。

public class InstanceTest {

public static void main(String[] args){

Object hello = "Hello";

System.out.println(hello instanceof Object);

System.out.println(hello instanceof String);

System.out.println(hello instanceof Math);

System.out.println(hello instanceof Comparable);

String str = "hello";

System.out.println(str instanceof Object);

//System.out.println(strinstanceof Math);

System.out.println(hello instanceof java.io.Serializable);

}

}

Output:

true

true

false

true

true

true

System.out.println(strinstanceof Math);则编译错误是因为instanceof运算符有一个限制,编译时类型必须是如下3种情况:

要么与后面的类相同;要么是后面类的子类;要么是后面类型的子类。

如果前面操作数的编译时类型与后面的类型没有任何关系,程序将没发通过编译。

在运行阶段,被转型变量所引用对象的实际类型必须是目标类型的实例,或者是目标类型的子类,实现类的实例,否则在运行时将引发ClassCastException异常。

public class InstanceTest {

public static void main(String[] args){

Object hello = "Hello";

String objStr = (String)hello;

System.out.println(objStr);

Object objPri = new Integer(5);

String str = (String)objPri;

String s ="Java";

}

}

Exceptionin thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String

Hello

at InstanceTest.main(InstanceTest.java:8)

无法从Integer转换成String类型。

public class InstanceTest {

public static void main(String[]args){

String s = null;

System.out.println(s instanceof String);

}

}

False

S定义为null,虽然null可以作为所有引用类型变量的值,但对于s引用变量而言,它实际并未引用一个真正的String对象,因此程序输出false。

Java Instanceof的更多相关文章

  1. C++ 'dynamic_cast' and Java 'instanceof' 使用对比

    在Java中,如果A是基类,B是A的派生类,那么instanceof可以用来判断一个实例对象是A还是B,相当于一个二元操作符,但与==, >, < 不同的是,它是由字母组成,是Java的保 ...

  2. android Java instanceof关键字

    instanceof是Java的一个二元操作符,和==,>,<是同一类东东.由于它是由字母组成的,所以也是Java的保留关键字.它的作用是测试它左边的对象是否是它右边的类的实例,返回boo ...

  3. java :instanceof用法

    Java中的instanceof是用来判断某个实例是不是某个类的实例. 例如:A instanceof B (A为某个实例,B为某个类名) 如果A为B的实例,则:(A instanceof B)==t ...

  4. Java instanceof 关键字是如何实现的?

    作者:RednaxelaFX链接:https://www.zhihu.com/question/21574535/answer/18998914来源:知乎著作权归作者所有.商业转载请联系作者获得授权, ...

  5. Java instanceof运算符

    java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例.instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例. 用法: res ...

  6. Java instanceof的进一步理解

    instanceof是Java的一个二元操作符,和==,>,<是同一类东东.由于它是由字母组成的,所以也是Java的保留关键字.它的作用是测试它左边的对象是否是它右边的类的实例,返回boo ...

  7. [Java学习] Java instanceof 运算符

    多态性带来了一个问题,就是如何判断一个变量所实际引用的对象的类型 . C++使用runtime-type information(RTTI),Java 使用 instanceof 操作符. insta ...

  8. java instanceof和isInstance的关系 精析

      1.instanceof 用途:判断这个object对象是不是这种Class类型. 语法: boolean result = object instanceof Class; 用法: 判断obje ...

  9. java instanceof 的理解

    简单来说,java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例.instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例. 用法 ...

随机推荐

  1. ZigBee心电传输(三)

    这段时间因为另外一个项目需要,我搞Zed板去了.现在接着上一步的工作吧,继续把心电做完.这里想要测试一下把心电波形数据传输出来,然后用协调器接收,并从串口显示出来.之后再用ZigBee转蓝牙,从而可以 ...

  2. USB HID介绍

    HID是一种USB通信协议,无需安装驱动就能进行交互,在学习HID之前,先来复习一下USB协议的相关内容. USB设备描述符-概述 当插入USB设备后,主机会向设备请求各种描述符来识别设备.那什么是设 ...

  3. Java初转型-MavenWEB项目搭建

    http://www.cnblogs.com/xdp-gacl/p/4054814.html

  4. 整理:C#写ActiveX, 从代码到打包到签名到发布的示例

    对于不懂C++和VB的我, 在工作上却遇到需要重写旧ActiveX控件的任务. 好在客户机都是Windows PC, 基本上都有.net framework 2.0, 勉强用C#实现可以满足需求 所以 ...

  5. [转]Mac App distribution in App Store

    Mac程序的大包上传和iOS的有些许不同,因为Mac app既可以上传到store,也可以不通过store供人下载.因此,code sign和provision要根据情况(开发,release< ...

  6. js获取url的各项参数

    function getQueryStringArgs() { //取得查询字符串并去掉开头的问号 var qs = location.search.length > 0 ? location. ...

  7. c#解析XML和JSON

    http://guwei4037.blog.51cto.com/3052247/1344190  

  8. 02.Lua的数据类型

    简单认识Lua 百度了一下(偷哈懒就不自己写了) Lua 是一个小巧的脚本语言.是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janei ...

  9. php 之 文件上传(0523)

    如何上传图片: 上传页面: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http ...

  10. 关于exec命令函数

    exec执行某命令在命令行下没有问题,但是在php中就出错.这个问题99.99%与权限有关,但是exec执行的命令不会返回错误.一个技巧就是使用管道命令,假设你的exec调用如下: exec('con ...