String s="a"+"b"+"c"+"d"创建了几个对象(假设之前常量池是空的)?
2,StringBuilder sb = new StringBuilder();
String a = "a";
String b = "b";
String c = "c";
String d = "d";
String s = a+b+c+d; 这句话创建了几个对象?
StringBuilder sb = new StringBuilder();
sb.append("a").append("b").append("c").append("d");这句话创建了几个对象?
5,5,1?
通过即时窗口和内存窗口,我们可以查看栈中存放变量的栈地址和堆中的堆地址,首先在即时窗口,输入&号加上变量,这样你就明白了
最烦这种似是而非的问题了
String a = "a";
String b = "b";
String c = "c";
String d = "d";
String s = a+b+c+d;
以对象来说值创建了一个对象那就是s,其他的 abcd都只是一个字符串引用指向字符串常量池,当然你觉得引用也是对象的话,那就是6个.
StringBuilder sb = new StringBuilder();
sb.append("a").append("b").append("c").append("d");这个只有一个对象,当然你觉得引用也是对象的话,那就是2个
String s="a"+"b"+"c"+"d"
创建一个对象,编译器会自己做优化,在编译阶段就会把a,b,c,d加在一起。
String a = "a";
String b = "b";
String c = "c";
String d = "d";
String s = a+b+c+d;
五个对象a,b,c,d,s
StringBuilder sb = new StringBuilder();
sb.append("a").append("b").append("c").append("d");
五个对象:a,b,c,d,sb