免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 大马虎
打印 上一主题 下一主题

java的判断对象相等的两个问题 [复制链接]

论坛徽章:
0
1 [报告]
发表于 2006-04-05 15:18 |显示全部楼层
结合四楼的看

如果是在程序开始的时候,

a==b是返回true的,以后的不保证

两种情况都是返回true

因为String是一个不可变的对象,而String的直接量赋值会自动寻找以前生成了的内容相同的实例赋给引用,若以前没有内容相同的实例存在,则创建新实例

也就是说LZ的两种情况,在String b="HelloWorld"时候,都会作b=a的操作
所以b==a的值都是true

但若程序在之前还有一些别的操作的话,尤其是第二种情况

例如 String c="HelloWorld!";
        String a=new String("HelloWorld");
        String b ="HelloWorld!";
这种情况a!=b了

[ 本帖最后由 艾斯尼勒 于 2006-4-5 15:20 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2006-04-05 15:40 |显示全部楼层
原帖由 xxjoyjn 于 2006-4-5 15:26 发表
按照LZ的字面意思,我认为他说的两种情况下,a都不等于b,
因为在两种情况的本质都是一样的,a,b 分别是两个独立对象的引用,或者说
是两个独立对象在内存中的地址,既然是两个独立的地址,它们的值当然不一样!



情看搂上我的解释,都应该是返回true的,您可以写个程序实验一下

论坛徽章:
0
3 [报告]
发表于 2006-04-05 16:08 |显示全部楼层
原帖由 tong0245 于 2006-4-5 15:44 发表

还是作个试验好 不过我感觉第一种情况是true 第二种是false


嗯,第二种的确是false,不过hashCode是一样的。奇怪阿奇怪

论坛徽章:
0
4 [报告]
发表于 2006-04-05 16:16 |显示全部楼层
原帖由 carset 于 2006-4-5 16:03 发表
。。你们回帖子。都不先自己试一下的么?

总之每次我都自己先试一下。确保没有错误才回复。。。



呵呵。我以前试过的,不过还是把结果记错了。


  1. public class Equal
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 String a = new String("ABC");
  6.                 String b = "ABC";
  7.                 System.out.println(a.hashCode());
  8.                 System.out.println(b.hashCode());
  9.                 System.out.println(a==b);
  10.         }
  11. }
复制代码

返回结果是false,但hashcode是相同的,应该是同一个地址吧。String重写了hashCode()?

[ 本帖最后由 艾斯尼勒 于 2006-4-5 16:19 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2006-04-05 16:26 |显示全部楼层
原帖由 carset 于 2006-4-5 16:18 发表
String.hashcode();



嗯,的确是重写了,为内容相同的对象返回相同的值,为了equals方法能返回想要的结果

论坛徽章:
0
6 [报告]
发表于 2006-04-06 13:50 |显示全部楼层
原帖由 kinns 于 2006-4-5 23:05 发表
1. 首先String不属于8种基本数据类型,String是一个对象。  

  因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象
,有其它对象没有的一些特性。  

  2. new String()和 ...



好文阿
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP