黑马程序员技术交流社区
标题:
instanceof判断问题
[打印本页]
作者:
边道坚
时间:
2013-3-19 21:21
标题:
instanceof判断问题
本帖最后由 边道坚 于 2013-3-19 23:13 编辑
我就是没有弄明白 它是判断什么。
比如 对象 instanceof 方法名。
这是谁判断谁啊,是对象判断 方法名 还是方法名判断 对象,
这个代码运行之后是 3个 true. 不知道为什么
希望哪位大侠帮解答一下....
public class Shout {
String name="Person";
public void Shout(){
System.out.println(name);
}
}
class Student extends Shout{
public void methodB(){
String name="Student";
String School="school";
System.out.print("Child methodB");
}
}
class Sample{
public static void main(String []args){
Shout base=new Student();
System.out.println(base instanceof Student);
System.out.println(base instanceof Shout);
System.out.println(base instanceof Object);
}
}
复制代码
作者:
丁一
时间:
2013-3-19 21:26
判断instanceof 前面的是否属于后面的
base 是 Student的对象 输出true
Student 又继承Shout 输出true
Object 又是所有对象的父类 也输出true了
作者:
杨博
时间:
2013-3-19 21:29
instanceof是Java的一个二元操作符,和==,>,<是同一类东东。由于它是由字母组成的,所以也是Java的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。举个例子:
String s = "I AM an Object!";
boolean isObject = s instanceof Object;
我们声明了一个String对象引用,指向一个String对象,然后用instancof来测试它所指向的对象是否是Object类的一个实例,显然,这是真的,所以返回true,也就是isObject的值为True。
作者:
刘国涛
时间:
2013-3-19 21:34
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,理由同上
作者:
张亚青
时间:
2013-3-19 21:40
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:56
丁一 发表于 2013-3-19 21:26
判断instanceof 前面的是否属于后面的
base 是 Student的对象 输出true
Student 又继承Shout 输出true
谢谢你的回答
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2