public static void mian(String[] args) {
String A, B, C;
A = "a";
B = "b";
A = A + B;
StringBuffer D = new StringBuffer("string");
D = D.append("s");
}

解决方案 »

  1.   

    public static void main(String[] args) {//不是mian, 是main
            String A, B, C; //字符串变量不能是大写的
            A = "a";  //一个,
            B = "b";  //一个
            A = A + B;//一个,在虚拟机中,被解释为:String A=(new StringBuffer().append("a").append("b")).toString()            StringBuffer D = new StringBuffer("string");//一个
            D = D.append("s");
        }
    一共4个  
    注:个人理解,仅供参考!
      

  2.   


    其实toString()也会产生一个String对象,所以有5个String对象
      

  3.   

            A = "a";    //一个
            B = "b";    //一个
            A = A + B;  //一个
            StringBuffer D = new StringBuffer("string");   //"string"一个
            D = D.append("s");    //s也是一个String对象
    一共5个
      

  4.   

    最后一句  D = D.append("s");  "s"也是一个
      

  5.   

    4 个对象       String A, B, C;
            A = "a";    // 1
            B = "b";    // 1
            A = A + B;  //  String 是final类型,A+B会生成新对象
            StringBuffer D = new StringBuffer("string"); // 1
            D = D.append("s");
      

  6.   

    2个
    A = A + B;
    StringBuffer D = new StringBuffer("string");A = "a";
    B = "b";
    "string"
    都是存在常量池中的。没有对象
      

  7.   

      没说完,这个是语法层面,实际上编译器会做优化,
      
      String A, B, C;
      A = "a"; 
      B = "b"; 
      A = A + B; 
     一开始就已经确定,都是放在常量池里,没有对象,只有引用
    StringBuffer D = new StringBuffer("string"); 只有一个
      

  8.   

    4个   A = "a"; //一个,
      B = "b"; //一个
      A = A + B;//一个,在虚拟机中,被解释为:String A=(new StringBuffer().append("a").append("b")).toString()    StringBuffer D = new StringBuffer("string");//一个
      D = D.append("s");
      

  9.   

    “ A = A + B;//一个,在虚拟机中,被解释为:String A=(new StringBuffer().append("a").append("b")).toString()  ”在虚拟机中被解释成String A=(new StringBuffer().append("a").append("b")).toString(),放眼看去,至少创建了一个StringBuffer对象了,toString的时候还创建了一个String对象,String和StringBuffer的底层都是char数组,这就又有两个数组对象了