首页 新闻 会员 周边

关于String创建对象。。。。。。。。。。。。。。

0
悬赏园豆:10 [已关闭问题] 关闭于 2014-08-27 02:04

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");这句话创建了几个对象?

zhangpengpeng的主页 zhangpengpeng | 初学一级 | 园豆:114
提问于:2014-08-13 21:44
< >
分享
所有回答(4)
0

5,5,1?

清风君 | 园豆:372 (菜鸟二级) | 2014-08-13 21:48
0

通过即时窗口和内存窗口,我们可以查看栈中存放变量的栈地址和堆中的堆地址,首先在即时窗口,输入&号加上变量,这样你就明白了

秋壶冰月 | 园豆:5903 (大侠五级) | 2014-08-13 22:23
0

最烦这种似是而非的问题了

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个

吴瑞祥 | 园豆:29449 (高人七级) | 2014-08-14 09:36
0

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

摇啊摇啊摇 | 园豆:408 (菜鸟二级) | 2014-08-14 10:04
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册