小春网

 找回密码
 注册账号
12
返回列表
楼主: Taoism_Judaism
收起左侧

[IT 交流] java里的equals方法跟双等号差别

[复制链接]
发表于 2015-3-1 23:30:26 |
不会看源码么,再不行看jdk doc
发表于 2015-3-7 09:48:20 |
equals是从Object继承来的,object是比较地址,String类重写了之后比较值。
object的equals(target)方法返回的就是this==target
发表于 2015-3-11 15:17:54 |
equals是判断内存里的东西是不是一样,字符串的内存大小是可变的,直接用等号得到的结果肯定是返回false的,数值字符是固定长的内存,就可以直接用双等号判断了
发表于 2015-4-22 14:23:16 |
a和b是两个new出来的对象,对象之间的比较要用equals不能用“==”基本数据类型的比较采用“==”int,boolean,char,long等都属于基本数据类型
发表于 2015-4-30 21:04:21 |
对象的比较 还有对象路径什么的吧 不清楚
头像被屏蔽
发表于 2015-5-1 10:41:44 |
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2015-7-3 01:03:08 |
String  aa = new String("ddd");
String  bb = new String("ddd");
new  就是申请内存,  所以aa, bb是两个不同的内存区域,虽然保存的内容是一样的。
== 是内存地址比较, 所以 aa==bb是false。

一般是不这么写的  保存的是同样的内容,却各自申请一块内存,也是比较浪费内存的,虽然现在CPU速度快了,内存大了  不在乎那一点的性能了。

一般字符串变量都是这么写的吧
String   aa = "dd";
String   bb = "dd";
这里就有java开发者的智慧了。 仅对于字符串类型的class,如果赋的是同样的字符串的话,第二个就不会再申请内存了,而是直接指针指向第一个字符串变量的地址, 实际上第二行跟下面写的是一样的;
String   bb = aa;

所以,这个时候当然就可以用 ==判断了。  aa==bb为true。

String.equals()的定义是比较内容的,而不是地址, 所以就不多说了。

评分

参与人数 1 +44 收起 理由
憨吃迷糊睡 + 44 赞一个

查看全部评分

发表于 2015-7-3 11:03:32 |
这版里怎么什么都有
发表于 2015-7-4 19:03:18 |
gaco 发表于 2015-7-3 11:03
这版里怎么什么都有

因为叫综合讨论版……汗(⊙﹏⊙)b
小春网
常务客服微信
微信订阅号
手机客户端
扫一扫,查看更方便! 快速回复 返回顶部 返回列表