instanceof的用法
转载自:http://blog.csdn.net/cnmilan/article/details/41696093
package myPackage;
/**
* instanceof运算符用法
* 运算符是双目运算符,左面的操作元是一个对象,右面是一个类.当
* 左面的对象是右面的类创建的对象时,该运算符运算的结果是true,否则是false
*
* 说明:(1)一个类的实例包括本身的实例,以及所有直接或间接子类的实例
* (2)instanceof左边操作元显式声明的类型与右边操作元必须是同种类或右边是左边父类的继承关系,
* (3)不同的继承关系下,编译出错
*/
class Person {
}
class Student extends Person {
}
class Postgraduate extends Student {
}
class Animal {
}
public class Ex_instanceOf {
public static void main(String[] args) {
instanceofTest(new Student());
}
/**
* 这个程序的输出结果是:p是类Student的实例
*
* Person类所在的继承树是:Object<--Person<--Student<--Postgraduate。
*
* 这个例子中还加入一个Animal类,它不是在Person类的继承树中,所以不能作为instanceof的右操作数。
*
* @param p
*/
public static void instanceofTest(Person p) {
// p 和 Animal类型不一样,彼此之间没有继承关系,编译会出错
// 提示错误:Incompatible conditional operand types Person and Animal
// if(p instanceof Animal){
// System.out.println("p是类Animal的实例");
// }
//下面代码的除了第一行都会输出
if (p instanceof Postgraduate) System.out.println("p是类Postgraduate的实例");
if (p instanceof Person) System.out.println("p是类Person的实例");
if (p instanceof Student) System.out.println("p是类Student的实例");
if (p instanceof Object) System.out.println("p是类Object的实例"); }
}
interface A{ }
class B implements A{ }
class C extends B{ }
public class Iinstanceof { public static void main(String[] args) {
A ab=new B();
A ac=new C();
B bc=new C();
B bb=new B();
C cc=new C();
//对象实现一个接口,用这个对象和这个接口进行instanceof判断,都为true。
System.out.println("ab instanceof A="+(ab instanceof A));
System.out.println("ac instanceof A="+(ac instanceof A));
System.out.println("bc instanceof A="+(bc instanceof A));
System.out.println("bb instanceof A="+(bb instanceof A));
System.out.println("cc instanceof A="+(cc instanceof A));
//对象和父类进行instanceof判断,都为true
System.out.println("ab instanceof B="+(ab instanceof B));
System.out.println("ac instanceof B="+(ac instanceof B));
System.out.println("bc instanceof B="+(bc instanceof B));
System.out.println("bb instanceof B="+(bb instanceof B));
System.out.println("cc instanceof B="+(cc instanceof B));
//对象和他的子类进行instanceof判断为false
System.out.println("ab instanceof C="+(ab instanceof C));
System.out.println("ac instanceof C="+(ac instanceof C));
System.out.println("bc instanceof C="+(bc instanceof C));
System.out.println("bb instanceof C="+(bb instanceof C));
System.out.println("cc instanceof C="+(cc instanceof C));
}
}
结果:
- ab instanceof A=true
- ac instanceof A=true
- bc instanceof A=true
- bb instanceof A=true
- cc instanceof A=true
- ab instanceof B=true
- ac instanceof B=true
- bc instanceof B=true
- bb instanceof B=true
- cc instanceof B=true
- ab instanceof C=false
- ac instanceof C=true
- bc instanceof C=true
- bb instanceof C=false
- cc instanceof C=true
instanceof的用法的更多相关文章
- Java-Runoob-高级教程-实例-方法:07. Java 实例 – instanceOf 关键字用法
ylbtech-Java-Runoob-高级教程-实例-方法:07. Java 实例 – instanceOf 关键字用法 1.返回顶部 1. Java 实例 - instanceof 关键字用法 ...
- Java 实例 - instanceof 关键字用法
Java 实例 - instanceof 关键字用法 instanceof 是 Java 的一个二元操作符,类似于 ==,>,< 等操作符. instanceof 是 Java 的保留关键 ...
- Java中 final static super this instanceof 关键字用法
一.final关键字 final可以修饰变量.方法及类: 1.当定义一个final变量时,jvm会将其分配到常量池中,其所修饰的对象只能赋值一次,对基本类型来说是其值不可变,引用类型(包括作为函数形参 ...
- java 中的instanceof的用法
instanceof 运算符是Java.php的一个二元操作符(运算符),和==.>.<是同一类东西.由于它是由字母组成的,所以也是Java的保留关键字.它的作用是判断其左边对象是否为其右 ...
- java中instanceof的用法
java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例.instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例. 用法:resu ...
- Java中isAssignableFrom()方法与instanceof()方法用法
一句话总结: isAssignableFrom()方法是从类继承的角度去判断,instanceof()方法是从实例继承的角度去判断. isAssignableFrom()方法是判断是否为某个类的父类, ...
- instanceof的用法②
其实这个问题以前也困扰过我.我个人理解的一个应用场合就是,当你拿到一个对象的引用时(例如参数), 你可能需要判断这个引用真正指向的类.所以你需要从该类继承树的最底层开始,使用instanceof操作符 ...
- instanceof的用法①
public class typeof1{ private String a="zzw"; public void instance(){ if(a instanceof Stri ...
- instanceof简单用法
语法: 对象 instanceof 类: 含义:如果这个对象时这个类或者这个类的子类的实例化,那么结果及时ture, 否则 false. 常常用来判断一个类是否是某个类的子类,以此判断A类是否继承或者 ...
随机推荐
- js正则表达语法
/* *通过量词可以设置一个内容出现的次数 *量词只对它前边的一个内容起作用.所以在作用多个时需要用小括号()来向计算机说明这是一个整体. *-{n}代表正好出现n次. *-{m,n}出现了m-n次. ...
- crontab的mysqldump备份任务未能完全正确执行的故障处理
crontab是每个运维一线人员必须掌握的技术,熟练运用crontab可以自动帮助我们执行重复性的工作,提高运维的工作效率.它就像一个闹钟,在特定的时间,准时响应并执行相应的任务.如果你的工作经常与L ...
- SiteMesh入门(1-1)SiteMesh是什么?
1.问题的提出 在开发Web 应用时,Web页面可能由不同的人参与开发,因此开发出来的界面通常千奇百怪.五花八门,风格难以保持一致. 为了统一界面的风格,Struts 框架提供了一个标签库Tiles ...
- python 开发之路 - 入门
一. python 介绍 Python是著名的"龟叔"Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言.1991年 发布Python ...
- vue computed 原理
vue computed 主要依靠数据依赖来更新,这里不展示computed源代码,只展示核心思想. computed: { a(){ return this.b ++ } } data:{ b: 1 ...
- Python:使用youtube-dl+ffmpeg+FQ软件下载youtube视频
声明:本文所述内容都是从http://blog.csdn.net/u011475134/article/details/71023612博文中学习而来. 背景: 一同学想通过FQ软件下载一些youtu ...
- requests+正则表达式提取猫眼电影top100
#requests+正则表达式提取猫眼电影top100 import requests import re import json from requests.exceptions import Re ...
- 扩展第二屏幕发生Out Of Range及扩展后耳机没声音解决方案
新年好\(^o^)/~ 拓展屏幕这种事情.其实很简单的.无非就分辨率跟刷新频率.有时候一接好就可以了.有时候怎么也弄不出来.我也是搞了蛮久.昨天突然弄通了.小记一下说不定能帮到同需求人. [设备] 主 ...
- Node.js系列文章:如何进行代码调试
使用任何一门编程语言,都少不了代码调试这一功能.我们在使用JavaScript编写浏览器端代码时,Chrome提供了强大的调试工具Dev Tools,但是在编写Node.js代码时,大多数人最开始都使 ...
- thinphp验证码的简单实现
index.html <!DOCTYPE html><html lang="en"><head> <meta charset=" ...