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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胥文 中级黑马   /  2013-1-24 22:25  /  2035 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 胥文 于 2013-1-25 09:01 编辑

个人认为equals和==是一样的,感觉equals就像语言中的书面语正式一点,而==就像语言中的口语,非正式一点
求正解

点评

这个你去搜索一下以前的帖子。你这样子等别人回答,也挺耗时间的  发表于 2013-1-24 23:11

12 个回复

倒序浏览
这个问题论坛里有很多解释,你再搜搜吧。。。
回复 使用道具 举报
equals没有被重写之前 效果和"== "是一样的, 就是判断的值,必须来自同一对象.

但是,包装类和String类 等修改了equals方法, 其作用是判断两边对象的字符序列或者值是否相同,

而不再去管是否来自同一对象.
回复 使用道具 举报
黑马刘杰 发表于 2013-1-24 22:30
这个问题论坛里有很多解释,你再搜搜吧。。。

白天要上班,晚上回来要看视频,写博客,所以看贴的时间很少
回复 使用道具 举报
司懿卓 发表于 2013-1-24 22:40
equals没有被重写之前 效果和"== "是一样的, 就是判断的值,必须来自同一对象.

但是,包装类和String类 等修 ...

何为包装类,我第一次听说
可以帮我解释一下吗
回复 使用道具 举报
对应8大基本类型的对象类型类都是包装类,就Integer,Float,Character那些
回复 使用道具 举报
jonn 高级黑马 2013-1-25 01:03:03
7#
帖子里解释不全面,其实这实际上就是典型享元模式的运用....LZ自己问谷歌大神....
回复 使用道具 举报
本帖最后由 郭孟涛 于 2013-1-25 05:02 编辑

“= =”操作符用于比较两个对象的内存地址值是否相等,equals()方法用于比较两个对象的内
容是否一致。

一定要记住:“==”是比较内存地址值的,“equals”是比较内容的。


“==”举例

黑马训练营地址是:北京市海淀区东北旺西路8号中关村软件园9号楼国际软件大厦

“equals”举例

张三和李四、王五都是黑马训练营的学员。如果判断他们都是学员是正确的,但是如果判断他们是一个人吗就不是了。

回复 使用道具 举报
梁俊 黑马帝 2013-1-25 08:08:04
9#
本帖最后由 梁俊 于 2013-1-25 08:12 编辑

==操作符,用来比较引用类型对象的地址值,或者比较基本数据类型的值

equals
(1)如果一个类没有自己定义equals方法,那么它将继承Object类的equals方法,Object类的equals方法的实现代码如下:
    boolean equals(Object o){
     return this==o;
}
这说明,如果一个类没有自己定义equals方法,它默认的equals方法(从Object 类继承的)就是使用==操作符,
是在比较两个变量指向的对象是否是同一对象(也就是两个变量的地址值进行比较),这时候使用equals和使用==会得到同样的结果
(2)常用的String类是重写了Objet类的的equals方法, 是用于比较两个独立对象的内容是否相同
例如,对于下面的代码:
     String a=new String("foo");
     String b=new String("foo");
两条new语句创建了两个对象,然后用a,b这两个变量分别指向了其中一个对象,
这是两个不同的对象,它们在内存中的地址值是不同的,
所以,表达式a==b将返回false,而这两个对象中的内容是相同的,所以,表达式a.equals(b)将返回true。
(3)
如果一个类没有自己定义equals方法,它默认的equals方法(从Object 类继承的)就是使用==操作符,
就是在比较两个对象的地址值是否相等,这时候使用equals和使用==会得到同样的结果。
如果你编写的类希望能够比较该类创建的两个实例对象的内容是否相同,那么你必须覆盖equals方法,
由你自己写代码来决定在什么情况即可认为两个对象的内容是相同的。
回复 使用道具 举报
基本类型用==比较的是自身的数值。如int i = 1; int j = 2; System.out.println(i == j); 肯定是不等的,如果 i 和 j 的值一样,那用==比较就是true了。

所有的对象都是Object,对象用==比较的是内存地址值,也就是对象的hashCode码,创建自己的类时必要时会复写equals方法,让对象具备某种比较。
String类型复写了equals方法,所以你比较两个String时候比较的是字符串是否相等
回复 使用道具 举报
niumengliang 来自手机 初级黑马 2013-1-25 10:26:29
11#
其实说白了,就是==比较的是内存地址,equals比较的是两个数据的内容
回复 使用道具 举报
==,是基本数据类型用来比较值,引用数据类型比较地址的。
equals,是引用数据类型用来比较内容的。
回复 使用道具 举报
胥文 发表于 2013-1-24 22:43
何为包装类,我第一次听说
可以帮我解释一下吗

如何实在不懂的话就多看视频.   自己去理解才是王道..  
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马