黑马程序员技术交流社区
标题:
我想问一下,当两个对象用==连接时候仅仅是判断地址值(调用)hashcode)是否一致吗?
[打印本页]
作者:
潜伏
时间:
2014-1-13 23:35
标题:
我想问一下,当两个对象用==连接时候仅仅是判断地址值(调用)hashcode)是否一致吗?
如题所示,感激万分
作者:
大大老伴要跪IT
时间:
2014-1-14 00:16
==如果是基本类型数据比较的是基本数据值,如果是引用类型,比较的是对象的地址值。
作者:
汪伟楠
时间:
2014-1-14 11:10
这是java语言的定义:
1) 对象相等则hashCode一定相等;
2) hashCode相等对象未必相等
1.如果是基本变量,没有hashcode和equals方法,基本变量的比较方式就只有==;
2.如果是变量,由于在java中所有变量定义都是一个指向实际存储的一个句柄(你可以理解为c++中的指针),在这里==是比较句柄的地址(你可以理解为指针的存储地址),而不是句柄指向的实际内存中的内容,如果要比较实际内存中的内容,那就要用equals方法,如果是你自己定义的一个类,比较自定义类用equals和==是一样的,都是比较句柄地址,因为自定义的类是继承于object,而object中的equals就是用==来实现的。
我们用的String等等类型equals是比较实际内容,是因为String等常用类已经重写了object中的equals方法,让equals来比较实际内容。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2