分析下面这段代码,说明总共创建了多少个对象?程序的输出结果是什么?
public class Demo {
public static void main(String[] args) {
String a = "hello";
String b = "abc";
String c = a + b;
String d = "hello" + "abc";
System.out.println(c == d);
}
}
这里面第三句话,底层调用的顺序是:
StringBuilder sb = new StringBuilder();
sb.append(a);
sb.append(b);
sb是在堆中,并且append是在原来字符串的基础上追加的,最后相当于c指向的堆中的对象。
重要规则:
第四句话,两个常量相加,变量直接指向池中的对象;而变量相加,实际上变量指向的是堆中的对象。
因此本段程序输出的结果是false。
标签:面试题,Java,String,指向,sb,append From: https://www.cnblogs.com/pluto-/p/16897312.html