该程序的输出结果是什么?( )
public class Test {
public static void main (String args[]) {
String a, b, c, d;
a = "Hello1234";
b = "Hello" + String.valueOf(1234);
c = "Hello" + "1234";
d = new String (new char[]{'H', 'e', 'l', 'l', 'o', '1', '2', '3', '4'});
System.out.print (a == b);
System.out.print (" ");
System.out.print (a.equals(b));
System.out.print (" ");
System.out.print (a == c);
System.out.print (" ");
System.out.print (a.equals(c));
System.out.print (" ");
System.out.print (a == d);
System.out.print (" ");
System.out.print (a.equals(d));
System.out.print (" ");
}
}true true true true false true
false true true true false false
false true true true false true
false false true true false true
在 Java 中,每当我们使用双引号创建一个字符串时,Java 虚拟机会先在字符串常量池中查找是否存在该字符串,如果存在则直接返回常量池中的对象引用;如果不存在,则在常量池中创建该字符串,并返回对象引用。这样做的好处是避免了重复创建多个相同的字符串对象,减少了内存的开销。