作者AI3767 (AI3767)
看板java
标题Re: [J2SE] Java String观念请教?
时间Thu May 1 15:03:22 2008
※ 引述《Harifucks (就是要战脑残保险业务)》之铭言:
: ※ 引述《Harifucks (就是要战脑残保险业务)》之铭言:
: : public String makinStrings()
: : {
: : String s = “Fred”;
: : s = s + “47”;
: : s = s.substring(2, 5);
: : s = s.toUpperCase();
: : return s.toString();
: : }
: : How many String objects will be created when this method is invoked?
: : A. 1
: : B. 2
: : C. 3
: : D. 4
: : E. 5
: : F. 6
: : 明天公布正确答案
: 我选D,但是答案是C,有人可以解释吗?
: 出处:Testkiller SCJP 5,第91题
我的想法是, Java 会有String spool,
至少有 "Fred" 和 "47" 这两个在里面
String s = "Fred";
实际上是将 s 变数bind到 "Fred" 物件上
而 "Fred" 并非是在这个method中才产生的, 所以不能算在题目要的1次
s = s+"47";
则是runtime的事情, 会产生新的物件形成 "Fred47"
s = s.substring(2,5);
特别去看了source code,确定是产生新的物件
因为源码是使用建构式去产生
s = s.toUpperCase();
因为java大小写有差, 这里还是得要产生都是大写的物件
s.toString();
既然是String了, toString()的用意就是要一个表示该物件的String,
String主要就是用来表示String的, 所以这个method就是回传自己
所以我觉得应该是 3 个
这样解释不知道可不可以@@
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.123.105.166
※ 编辑: AI3767 来自: 140.123.105.166 (05/01 15:04)