A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 边道坚 中级黑马   /  2013-3-19 21:21  /  1749 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 边道坚 于 2013-3-19 23:13 编辑

我就是没有弄明白 它是判断什么。
比如 对象 instanceof 方法名。
这是谁判断谁啊,是对象判断 方法名 还是方法名判断  对象,
这个代码运行之后是 3个 true. 不知道为什么
希望哪位大侠帮解答一下....
  1. public class Shout {
  2. String name="Person";
  3. public void Shout(){
  4.   
  5.   System.out.println(name);
  6.   
  7. }

  8. }
  9. class Student extends Shout{
  10. public void methodB(){
  11.   String name="Student";
  12.   String School="school";
  13.   
  14.   System.out.print("Child methodB");
  15. }
  16. }
  17. class Sample{
  18. public static void main(String []args){
  19.   Shout base=new Student();
  20.   System.out.println(base instanceof Student);
  21.   System.out.println(base instanceof Shout);
  22.   System.out.println(base instanceof Object);
  23.   
  24. }
  25. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

5 个回复

倒序浏览
判断instanceof 前面的是否属于后面的
base 是 Student的对象   输出true
Student 又继承Shout   输出true
Object 又是所有对象的父类  也输出true了  
回复 使用道具 举报
instanceof是Java的一个二元操作符,和==,>,<是同一类东东。由于它是由字母组成的,所以也是Java的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。举个例子:

  String s = "I AM an Object!";
  boolean isObject = s instanceof Object;

  我们声明了一个String对象引用,指向一个String对象,然后用instancof来测试它所指向的对象是否是Object类的一个实例,显然,这是真的,所以返回true,也就是isObject的值为True。
回复 使用道具 举报
instanceof是用于判断对象的类型
Shout base=new Student();//多态,base指向Student类型
System.out.println(base instanceof Student);//判断base是否指向Student类型,true
System.out.println(base instanceof Shout);//判断base指向Shout类型,Shout是Student的父类,所以为true
System.out.println(base instanceof Object);//判断base指向Object类型,true,理由同上
回复 使用道具 举报
a instanceOf B 是判断 a是否是B的对象
需要注意的是 instanceOf 判断的是变量a在创建对象时new出的实例对象,而与声明的a的类型无关。
比如: Shout base=new Student();  中判断的是base指向的Studen实例t对象,而不是声明的Shout对象。

所以问题中的三句话相当于判断:
21.  System.out.println(base instanceof Student);//base指向的Student对象是否是Student类的实例对象?   答案是true

22.  System.out.println(base instanceof Shout);//base指向的Student对象是否是Shout类的实例对象?   答案是true


23.  System.out.println(base instanceof Object);//base指向的Student对象是否是Object类的实例对象?   答案是true
回复 使用道具 举报
丁一 发表于 2013-3-19 21:26
判断instanceof 前面的是否属于后面的
base 是 Student的对象   输出true
Student 又继承Shout   输出true

谢谢你的回答
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马