11. public String makinStrings() {
12. String s = “Fred”;
13. s = s + “47”;
14. s = s.substring(2, 5);
15. s = s.toUpperCase();
16. return s.toString();
17. }
How many String objects will be created when this method is invoked?
A. 1
B. 2
C. 3
D. 4
E. 5
F. 6
//我觉得是5个。。 不同意见的顶上

解决方案 »

  1.   

    继续补充,这个题目是testkiller 第91道题,不知道其他朋友碰到没
      

  2.   

    涉及的三个对象是 "Fred47", "ed4" ,"ED4" String s = “Fred”;    //在字符串池中创建对象“Fred”
    s = s + “47”;         //不产生新对象,string + 基本类型,是当成常量表达式直接求值来优化的,第一个对象变成“Fred47”。
    s = s.substring(2, 5);  //创建对象“ed4”
    s = s.toUpperCase();    //创建对象“ED4”
    return s.toString();参考:
    http://java.ccidnet.com/art/3539/20070912/1210357_1.html 
      

  3.   

    string + 基本类型?String类型什么时候变成基本类型了?还是....这代码不是Java的?
      

  4.   


    String s = “Fred”;     //对象"Fred",别说字符串常量不是对象...Java基本类型里可没有String型..."Fred"是有完整方法和属性的对象
    s = s + “47”;          //对象"47",以及对象"Fred47",字符串间接相加Java编译是不会优化的,同直接"Fred"+"47"不同...
    s = s.substring(2, 5); //对象"ed4"
    s = s.toUpperCase();   //对象"ED4"
    return s.toString();   //s返回它自己,前面s的指向一共改变了4次,涉及5个对象
    感觉题目太抽了,不过真要死掰的话....我认为是5个....