public class Test { public static void main(String[] args) { String a = "aa"; String b = "aaaa"; //a+=a; System.out.println(a+a); System.out.println(b==(a+a)); //System.out.println(b==a); } }
结果如下:
aaaa
false
请大神帮忙看一下结果为什么是false
==比较的对象引用,a+a虽然产生的值是aaaa,但是已经是新的地址了,这种对比没有什么意义 。wll77wang 的答案很标准哦
String的值不是常量吗.没new怎么会有俩个"aaaa"出现?
@吸收啊啊: 我个人觉得是在加之前不能判断a+a与aaaa是否相等,所以会找个新地址
这就是Java跟C#的不一样吧,C#第二个是True。。。
它指向的对象在内存中的存储地址,并不是“值”本身。所以String用equals
(a+a)产生了一个新的对象 与b是不同的两个对象
不建议使用==来做字符串的对比
返回false是因为内存储存的地址不一样
详细:http://www.cnblogs.com/tinyphp/p/3768214.html
==判断的是内存地址,对象不同地址不同,如果你用.equals()方法判断的话,比较的是值是不是相同 ,会返回true。
返回false是因为内存储存的地址不一样
详细:http://www.cnblogs.com/tinyphp/p/3768214.html
字符串比较用equals()
equals()是比较两个变量的内容。
==是比较两个变量的地址