请问String[] sting = new String[] {"xx","xx","xx"}
和String[] sting = {"xx","xx","xx"}有什么区别。

解决方案 »

  1.   

    有区别
    上面用到了new,会产生两个对象,new的时候给对象分配空间,赋值的时候再分配空间,结果造成浪费空间
    下面那个只会分配一次空间
      

  2.   

    String[] st=new String[2];
    是先定义一个String数组,2个长度,但不赋值
    等赋值时 st={"xx","xx"};String[] st={"xx","xx"};是直接定义并赋值
      

  3.   

    不知道java中字符串池对数组是怎么处理的,关注
      

  4.   

    我自己的理解应该是
    String[] sting = new String[] {"xx","xx","xx"}
    无论字符串池中有没有"xx"存在,都会重新分配空间创建"xx"对象
    String[] sting = String[] {"xx","xx","xx"}
    只要字符串池中存在"xx"
    就不会重新分配空间,只是让栈区的引用直接指向已经存在的"xx"对象
    个人理解!
      

  5.   

    再罗嗦几句,先不说数组,只说字符串
     string a=new string("abc")
    无论字符串池中是不是存在"abc",都会new一个新的"abc"对象,但这个对象并不是放在字符串池中
     string a="abc"
    先在字符串池中搜索有没有"abc",如果有的话就将a直接指向这个字符串,不重新分配空间
    如果没有,就会在字符串池中创建一个"abc"对象
    学习中