码迷,mamicode.com
首页 > 编程语言 > 详细

Java知多少(32)instanceof

时间:2015-04-11 08:52:15      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:

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

instanceof 运算符用来判断一个变量所引用的对象的实际类型,注意是它引用的对象的类型,不是变量的类型。请看下面的代码:

 1 public final class Demo{
 2     public static void main(String[] args) {
 3         // 引用 People 类的实例
 4         People obj = new People();
 5         if(obj instanceof Object){
 6             System.out.println("我是一个对象");
 7         }
 8         if(obj instanceof People){
 9             System.out.println("我是人类");
10         }
11         if(obj instanceof Teacher){
12             System.out.println("我是一名教师");
13         }
14         if(obj instanceof President){
15             System.out.println("我是校长");
16         }
17         System.out.println("-----------");  // 分界线
18        
19         // 引用 Teacher 类的实例
20         obj = new Teacher();
21         if(obj instanceof Object){
22             System.out.println("我是一个对象");
23         }
24         if(obj instanceof People){
25             System.out.println("我是人类");
26         }
27         if(obj instanceof Teacher){
28             System.out.println("我是一名教师");
29         }
30         if(obj instanceof President){
31             System.out.println("我是校长");
32         }
33     }
34 }
35 class People{ }
36 class Teacher extends People{ }
37 class President extends Teacher{ }

运行结果:
我是一个对象
我是人类
-----------
我是一个对象
我是人类
我是一名教师

可以看出,如果变量引用的是当前类或它的子类的实例,instanceof 返回 true,否则返回 false。

系列文章:

Java知多少(1)语言概述

Java知多少(2)虚拟机(JVM)以及跨平台原理

Java知多少(3) 就业方向

Java知多少(4)J2SE、J2EE、J2ME的区别

Java知多少(5) Java开发环境的搭建

Java知多少(6)第一个程序示例

Java知多少(7)类与对象

Java知多少(8)类库及其组织结构

Java知多少(9) import及Java类的搜索路径

Java知多少(10)数据类型及变量

Java知多少(11)数据类型转换

Java知多少(12)运算符

Java知多少(13)流程控制

Java知多少(14)数组

Java知多少(15)字符串

Java知多少(16)StringBuffer与StringBuider

Java知多少(17)强调一下编程风格

Java知多少(18)类的定义及其实例化

Java知多少(19)访问修饰符(访问控制符)

Java知多少(20)变量的作用域

Java知多少(21)this关键字详解

Java知多少(22)方法重载

Java知多少(23)类的基本运行顺序

Java知多少(24)包装类、拆箱和装箱详解

Java知多少(25)再谈Java包

Java知多少(26)源文件的声明规则

Java知多少(27)继承的概念与实现

Java知多少(28)super关键字

Java知多少(29)覆盖和重载

Java知多少(30)多态和动态绑定

Java知多少(31)static关键字以及Java静态变量和静态方法

Java知多少(32)instanceof

Java知多少(32)instanceof

标签:

原文地址:http://www.cnblogs.com/Coda/p/4416166.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!