黑马程序员技术交流社区
标题:
字符串是否相等
[打印本页]
作者:
星际传奇
时间:
2016-5-27 21:40
标题:
字符串是否相等
String s1 = "ab";
String s2 = "abc";
String s3 = s1 + "c";
int i,j,k;
k=s1.hashCode();
j=s2.hashCode();
i=s3.hashCode();
System.out.println(s3 == s2);
System.out.println(i+" "+j+" "+k);
s3==s2结果为false不是他们地址不同么 为什么后面哈希码相同?
false
96354 96354 3105
作者:
蓝色风信子
时间:
2016-5-27 22:28
String s="abc";
String s1=new String("abc");
System.out.println(s==s1);//false
System.out.ptingln(s.hashCode);//96354
System.out.println(s1.hashCode);//96354
老师讲的是==比较的是内存地址,hashCode相同,但比较结果为false,不理解.
作者:
lifeiwangyue
时间:
2016-5-27 22:43
不等的 如果是s3==”ab“+"c",就是相等的,因为变量的操作s1+"c",会产生新的地址 地址不一样的
作者:
蓝色风信子
时间:
2016-5-27 23:06
http://blog.csdn.net/gaopeng0071/article/details/11741027这上面讲的挺详细的,可以看看
作者:
hero_king
时间:
2016-5-27 23:12
首先你要知道字符串常量池的存在,字符串做+操作时先拼接在到常量池找有没有,变量存在于栈内存中,存放的是堆内存中的地址值,对内存中的地址值不同,但是内容相同,都指向常量池中的abc,ok?
作者:
一个大西瓜
时间:
2016-5-28 00:08
可以看一下这个http://www.cnblogs.com/heima-jieqi/archive/2012/04/10/2440086.html
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2