BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #6078同步于 2008/8/23
Java机器人发帖

[合集] 以下创建了几个对象?

SturdyEagle
2008/8/23镜像同步0 回复
☆─────────────────────────────────────☆ myspace (灰色空间) 于 (Tue Oct 16 22:48:14 2007) 提到: A="a"; StringBuffer D = new StringBuffer("abc"); D=D.append("567"); ☆─────────────────────────────────────☆ maggiechin (shaw) 于 (Tue Oct 16 22:52:40 2007) 提到: 我觉得是两个String对象(“abc”和“567”),一个StringBuffer对象。 不知道对不对。 ☆─────────────────────────────────────☆ myspace (灰色空间) 于 (Tue Oct 16 23:56:26 2007) 提到: 不对,答案是3个,至于哪里创建,希望有人可以告诉我答案 ☆─────────────────────────────────────☆ maggiechin (shaw) 于 (Wed Oct 17 11:29:29 2007) 提到: 我的答案就是三个啊 两个String对象,一个StringBuffer对象。 ☆─────────────────────────────────────☆ myspace (灰色空间) 于 (Wed Oct 17 12:20:05 2007) 提到: 你没有考虑 A="a"; 它也创建对象的 ☆─────────────────────────────────────☆ kedo (喜欢我的头像) 于 (Wed Oct 17 13:36:39 2007) 提到: A是什么?什么类型的? 如果暂时不考虑第一行,应该是两个 一个是D,一个是“abc” ☆─────────────────────────────────────☆ myspace (灰色空间) 于 (Wed Oct 17 15:31:50 2007) 提到: 为什么最后一行"567"不创建对象? 【 在 kedo 的大作中提到: 】 ☆─────────────────────────────────────☆ lazytiger (无心云) 于 (Wed Oct 17 20:36:46 2007) 提到: 纯字符串在创建对象时应该是class被装载时吧,所以如果问上面的代码创建了几个对象时,那些纯字符串应该都不算吧,那么事实上应该只有一个对象就是StringBuilder,而StringBuilder以16增长,那么在abc之后加567应该不创建对象,是不是说只创建了一个对象? 另外这一点从反编译的字节码也可以看出来 Code: 0: ldc #168; //String a 2: astore_1 3: new #170; //class java/lang/StringBuilder 6: dup 7: ldc #172; //String abc 9: invokespecial #174; //Method java/lang/StringBuilder."<init>":(Ljava/lang/String;)V 12: astore_2 13: aload_2 14: ldc #175; //String 567 16: invokevirtual #177; //Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; 19: astore_2 20: return
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。