黑马程序员技术交流社区
标题:
instanceof 关键字 与 ==疑问
[打印本页]
作者:
赵彦丰
时间:
2014-3-25 10:39
标题:
instanceof 关键字 与 ==疑问
看毕老师视频得时候 看到了个关键字不明白 instanceof 百度了下 觉得跟 == 不是一样么 。这里能用 ==么
public boolean equals(Object obj)
{
if(!(obj instanceof Person))//这里比较
return false;
Person p = (Person)obj;
System.out.println(this.name+"----"+p.name);
return this.name.equals(p.name)&&this.age == p.age;
}
复制代码
作者:
蓝枫
时间:
2014-3-25 10:55
instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
==其实是比较两个对象的内存地址
而equals方法是比较两个对象是否内容相等。
作者:
trhthyj
时间:
2014-3-25 12:43
==是比较运算符,用于比较两个对等的事物(个人观点),instanceof适用于判断一个对象是否是某个类的实例,也即判断对象是否属于某个类,对象与类之间是之间是所属关系。
作者:
追逐
时间:
2014-3-25 13:22
不一样的。==是一个运算符
而instanceof则是判断某个类是不是属于某个类
如 public void void(Object obj)
if(obj instanceof Student)
的意思你可以理解为被传进来的obj类是否是Student类
作者:
橸瑩膤漃寞林
时间:
2014-3-25 13:48
instanceof是谁的实例的意思, if(!(obj instanceof Person))这里的意思是如果不是Person类型,直接返回false。
==是比较两边是否相等。
作者:
月影释
时间:
2014-3-25 13:54
==可以比较地址 也可以比较变量 instanceof比较的是类类型 怎么会一样呢
作者:
郭黎明
时间:
2014-3-26 07:50
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类,则它们的字节码是一样的
作者:
海世山盟
时间:
2014-3-26 11:25
instanceof 多用在多态中判断类型是否一致,而==则是在数值之间比较相等关系。用于比较的还有存在于Object 类中的equals();默认的是比较两个句柄地址值是否相等(即两个句柄是否指向同一个实例),通常我们需要复写equals方法来满足我们实际需求。
作者:
MVP
时间:
2014-3-26 18:13
instanceof 比较的是该类对象是否所属关系,==判断的是地址值(引用型数据)或者数值是否相同数值是否相同(基本数据类型)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2