今天测试String字符串时遇到的问题,求大神解决
public void demo1() {
String a = "abc";
String ab = "ab";
String c = "c";
String abc = ab+c;
System.out.println(a==abc);//false
}
private void demo2() {
final String ab = "ab";
final String c = "c";
final String abc = "abc";
System.out.println(ab+c==abc);//true
}
private void demo3() {
final String ab ;
ab ="ab";//这跟demo2()方法差别就是后赋值
final String c = "c";
final String abc = "abc";
System.out.println(ab+c==abc);//false
}
可以解释下吗,三个都不太了解
http://www.kokojia.com/article/14774.html
String是很特殊的一个对象。除非你使用直接赋值
String a="abc",b="abc"
或者引用赋值
String b="abc",String a = b
才能保证值的内存地址相同.这样 == 表达式才能true,因为==对比的是内存地址。
否则,所有的string操作都会产生新的string对象。所以看到的都是false