- 日志
- 好友
- 卖家信用
- 买家信用
- 注册时间
- 2008-7-13
- 在线时间
- 小时
|
发表于 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()的定义是比较内容的,而不是地址, 所以就不多说了。
|
评分
-
查看全部评分
|