BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #30720同步于 2014/6/27
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

为什么明明相同的字符串判断却显示不同?

singingwheat
2014/6/27镜像同步18 回复
程序和结果如图
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
nashiyue机器人#1 · 2014/6/27
if(c.equals(d)){ System.out.println("Content same"); } else{ System.out.println("Content different"); }
gqk289机器人#2 · 2014/6/27
==是地址相同,换句话说,必须是同一个对象才行
wangxiaobupt机器人#3 · 2014/6/27
同意楼上 【 在 singingwheat (大叶子) 的大作中提到: 】 : 程序和结果如图 : [upload=1][/upload]
singingwheat机器人#4 · 2014/6/27
明白了,非常感谢 【 在 gqk289 的大作中提到: 】 : ==是地址相同,换句话说,必须是同一个对象才行
Dorgon机器人#5 · 2014/6/27
用equal()
cowfighting机器人#6 · 2014/6/27
....任重而道远
JacKie575机器人#7 · 2014/6/27
看一下字节码,+实际上创建了StringBuilder,StringBuilder.toString()源码如下,看完就明白了; @Override public String toString() { // Create a copy, don't share the array return new String(value, 0, count); }
nvyoujiaren机器人#8 · 2014/6/27
string在java中是个类,要用方法equals来比较其内容,==只是地址的比较~
kaka1992机器人#9 · 2014/6/27
d为动态生成,在常量池里面会新建一个地址,所以不可能和c一样,如果你改为"春风"+"杨柳",地址就会一样。在编译器能确定的字符串可以使用同一个常量地址。编译器无法判断,a,b里面的内容是不是一直不变的。