String s1=new String() 涉及了几个对象?

解决方案 »

  1.   

    String s1=new String()
    堆栈上分配地址S1,是一个指针。
    new String()   看到new,我们认为它在堆区分配了地址。但这里有特殊性,string的默认值是空字符串,它没有分配新的地址,是指向一个固定的静态存储区!所以这里没有分配对象。但如果是“涉及”,那么可以肯定,这里涉及到了1个对象。综上,其实String s1=new String()只是在栈上分配了一个指向静态存储区的指针。这个指针,我们一般不当作对象(实体),所以涉及到的只有1个:静态存储区的空字符串。新建的是0个。