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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 吴扬 中级黑马   /  2012-7-2 18:10  /  2002 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 吴扬 于 2012-7-5 00:18 编辑

一个instanceof关键字使用的小问题,请大家看看下面这段简单的代码:
ClassA a1 = new ClassA();
ClassA a2 = new ClassA();
System.out.println((a1 instanceof a2));//为什么这里会报错呢?这个instanceof的关键字用法到底是什么样的?

评分

参与人数 1技术分 +1 收起 理由
蒋映辉 + 1

查看全部评分

9 个回复

倒序浏览
本帖最后由 wyl530274554 于 2012-7-2 18:29 编辑

没有new Class()的,java里的Class类没有构造函数

instanceOf的用法:对象 instanceof 类


Demo d1 = new Demo();
Demo d2 = new Demo();

你可写 d1 instanceOf Demo
回复 使用道具 举报
本帖最后由 赵方明 于 2012-7-2 18:44 编辑

instanceof运算符用来判断前面的对象是否是后面的类的实例。
它的前一个操作数通常是一个应用类型变量,后一个操作数通常是一个类。
ClassA a1 = new ClassA();//这里建立一个classA()的对象a1
ClassA a2 = new ClassA();//这里建立一个类classA()的对象a2
System.out.println((a1 instanceof a2));这里比较的a1和a2都是对象,而a2这个位置上本来应该是一个类,所以会报错。
这样写就对了
System.out.println((a1 instanceof classA))

评分

参与人数 1技术分 +1 收起 理由
蒋映辉 + 1

查看全部评分

回复 使用道具 举报
回复 使用道具 举报
应该是System.out.println(a1 instanceof ClassA)
回复 使用道具 举报
小资料一枚看看吧.java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
用法:
result = object instanceof class
参数:
Result:布尔类型。
Object:必选项。任意对象表达式。
Class:必选项。任意已定义的对象类。
说明:
如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object 不是指定类的一个实例,或者 object 是 null,则返回 false。
回复 使用道具 举报
x  instanceof b,这里是判断对象x是否是b类,今天刚从视频里看的
回复 使用道具 举报
本帖最后由 谭立文 于 2012-7-2 22:36 编辑

instanceof 这个关键字的用法是:
变量名a  instanceof   类名A
说的是 变量a是 A类型吗? 若是为  true
若 有如下代码
class  A
{
}
class B extends A
{
}
A a = new B();
a instanceof B   ???
答案是 true
在这里是有多态存在的,类A是B类的父类,即a是 B类型的上转型对象。
其实当你写 a instanceof B 时实际上是相当于
这样写.
if(a.getClass() == B.class)   //a.getClass(),因为每个类在你定义时都是隐式的重写了getClass方法的所以a.getClass()返回的是B.class  即有多态存在
{
                        System.out.println(a.getClass());
  }

评分

参与人数 1技术分 +1 收起 理由
蒋映辉 + 1 很给力!

查看全部评分

回复 使用道具 举报
instanceof of   是判断某个对象是否从属于某个类的, 你那是对象从属于对象,当然错了。
回复 使用道具 举报
谢谢大家,明白了!我可能把instanceof和两个对象之间的比较方式弄混了!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马