返回信息流程序和结果如图
这是一条镜像帖。来源:北邮人论坛 / java / #30720同步于 2014/6/27
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
为什么明明相同的字符串判断却显示不同?
singingwheat
2014/6/27镜像同步18 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
if(c.equals(d)){
System.out.println("Content same");
}
else{
System.out.println("Content different");
}
看一下字节码,+实际上创建了StringBuilder,StringBuilder.toString()源码如下,看完就明白了;
@Override
public String toString() {
// Create a copy, don't share the array
return new String(value, 0, count);
}
d为动态生成,在常量池里面会新建一个地址,所以不可能和c一样,如果你改为"春风"+"杨柳",地址就会一样。在编译器能确定的字符串可以使用同一个常量地址。编译器无法判断,a,b里面的内容是不是一直不变的。