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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯伟超 中级黑马   /  2012-12-19 20:09  /  1202 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

想问下instanceof是怎么运用的?是判断一个对象是否是属于一个类的对象,但是是不是有个前提呢?
一般看到的是Object是和Object一起用,感觉挺迷惑的,求解释?

2 个回复

倒序浏览
instanceof是Java的一个二元操作符。由于它是由字母组成的,所以也是Java的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。可以用在继承中的子类的实例是否为父类的实现。
例子:
String s = "I AM an Object!";
boolean isobject = s instanceof Object;
我们声明了一个String对象引用,指向一个String对象,然后用instanceof来测试它所指向的对象是否是Object类的一个实例,显然,这是真的,所以返回true,也就是isobject的值为true。

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
instanceof运算符是判断某个obj是否为某个类的实例。
但对于instanceof这个运算符,要注意:当前面的对象是后面类的实例或其子类的实例时都将返回true。
所以,如果要严格判断对象是否为一个类的实例,而又不是它子类的实例时,建议使用obj.getClass()==类名.class。
(这个判断代码用了反射基础知识)。
举个例子,Student是Person类的子类,有Student的一个实例stu,
则stu instanceof Person 返回true,stu instanceof Student返回true。
如果要严格判断,stu.getClass()==Person.class就返回false了,只有stu.getClass()==Student.class 返回true。
希望你能理解。

评分

参与人数 1技术分 +1 收起 理由
崔政 + 1

查看全部评分

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