关于hashCode和equals

Iam_magicHu 2012-12-21 04:54:34
下载了http://bbs.csdn.net/topics/390317468提供的代码,看了字符串那个demo,突然发现我搞不清String的hashcode和equals方法了,
String s1 = "a";
String s2 = s1 + "b";
String s3 = "a" + "b";

System.out.println(s2 == "ab");
System.out.println(s3 == "ab");
System.out.println(s2 == s3);
System.out.println(s2.hashCode());
System.out.println(s3.hashCode());
对于s2和s3,他们的hashCode是相同的,s2 == s3为false,所以s2和s3不是一个对象。我之前一直以为如果两个string的hashcode相同,那么两个对象就相同,现在看来我是打错特错了,求大神讲解一二,以开阔我这狭隘的眼界。另外问一下,对于
String s1 = "a";
String s2 = s1 + "b";
String s3 = "a" + "b";
到底创建了几个对象?求解
...全文
131 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
失落夏天 2012-12-21
  • 打赏
  • 举报
回复
两个字符串相同,hashCode就一定相同,除非重写equeals方法。 hashCode只是一个栈区存放字符串,你new一个对象指只是向该hashCode而已 多做几个类似的例子,也许说的不是太明白,但却会懂得更多

51,409

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧