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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵彦丰 中级黑马   /  2014-3-25 10:39  /  1382 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

看毕老师视频得时候 看到了个关键字不明白 instanceof   百度了下 觉得跟  == 不是一样么  。这里能用 ==么

  1. public boolean equals(Object obj)
  2.         {
  3.                 if(!(obj instanceof Person))//这里比较
  4.                         return false;
  5.                 Person p = (Person)obj;
  6.                 System.out.println(this.name+"----"+p.name);
  7.                
  8.                 return this.name.equals(p.name)&&this.age == p.age;
  9.         }
复制代码



       

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

8 个回复

正序浏览
MVP 中级黑马 2014-3-26 18:13:47
9#
instanceof 比较的是该类对象是否所属关系,==判断的是地址值(引用型数据)或者数值是否相同数值是否相同(基本数据类型)

评分

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

查看全部评分

回复 使用道具 举报
instanceof 多用在多态中判断类型是否一致,而==则是在数值之间比较相等关系。用于比较的还有存在于Object 类中的equals();默认的是比较两个句柄地址值是否相等(即两个句柄是否指向同一个实例),通常我们需要复写equals方法来满足我们实际需求。

评分

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

查看全部评分

回复 使用道具 举报
public static void main(String[] args) {
                E e = new E();
                System.out.println(e.getClass()==E.class)
        }
}
class E  {}
这个打印出来是true,只有e.getClass()==E.class这样才可以用==,if(a instanceof b)判断的是a对象是否属于b类型,a为对象,b为类,如果用==你可以这样判断ifa.getClass()==b.class),因为如果a对象属于b类,则它们的字节码是一样的


评分

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

查看全部评分

回复 使用道具 举报
==可以比较地址 也可以比较变量   instanceof比较的是类类型  怎么会一样呢

评分

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

查看全部评分

回复 使用道具 举报
instanceof是谁的实例的意思, if(!(obj instanceof Person))这里的意思是如果不是Person类型,直接返回false。
==是比较两边是否相等。

评分

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

查看全部评分

回复 使用道具 举报
不一样的。==是一个运算符
而instanceof则是判断某个类是不是属于某个类
如  public void void(Object obj)
   if(obj instanceof  Student)
的意思你可以理解为被传进来的obj类是否是Student类

评分

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

查看全部评分

回复 使用道具 举报
==是比较运算符,用于比较两个对等的事物(个人观点),instanceof适用于判断一个对象是否是某个类的实例,也即判断对象是否属于某个类,对象与类之间是之间是所属关系。

评分

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

查看全部评分

回复 使用道具 举报
instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
==其实是比较两个对象的内存地址
而equals方法是比较两个对象是否内容相等。

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

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