String s = new String("a"+"a"+"c"+"d");
问创建了几个对象

解决方案 »

  1.   

    不可能是1个的。至少2个
    我现在不清楚"a"+"a"+"c"+"d" 到底创建了几个对象
      

  2.   

    新创建的不一定,比如如果栈里面有a,那么这时候就不会再次在栈中创建a。
    如果栈里没有:
    a
    c
    d
    aa
    aac
    aacd
    s7个吧。
      

  3.   

    是7个.楼上正解
    String 在这个问题上会给内存造成大量的垃圾!
    所以StringBuffer会解决这个问题
      

  4.   

    只有 一个对象  accd 
      

  5.   

    2个
    常量池一个"aacd"
    new 操作符在堆中创建一个
      

  6.   

    错了吧,s是引用不是对象,是在栈里面创建的
    其他是对象但编译的时候把常量已经优化成aacd,运行的栈里只有对这个常量池里常量的引用符号
    同时new会在堆里创建一个内容是aacd的字符串对象并用引用s指向这个对象
      

  7.   

    7个
    对于String相加的每次加一下就等于new了一个对象
    像你这样写就等于重复创建了好几个对象,消耗了性能
    一般字符串拼接解决方法是用StringBuffer或StringBuilder
    例如:
    StringBuffer snb=new StringBuffer("a");
    snd.append("c");
    ....