当然会,
就等于说你实例了100个badString!

解决方案 »

  1.   

    不会,对于String只会有一个实例,
      

  2.   

    loveyousomuch 的对,上边我说错了,sorry
      

  3.   

    不同意楼上朋友的说法。无所谓,无论你的引用在for的内部还是外部声明,100个String实例都是要在内存中创建的。而且从控制变量的作用域的角度出发,就是应该在for的内部声明变量。关于变量声明的一个好的规则就是:直到你在要求的作用域内真正要用到它的时候,才去声明它。
      

  4.   

    补充,对于楼主的样例程序,就像bclin(橙子)说的,内存空间只有一块,因为new String ("Hello, world!");的具体内容是以字符串常量形式创建的,jvm会自动到常量池里面去找"Hello, world!"而无需每次都开辟新的内存空间。但是,如果String不是以字符串常量方式声明的话,就必须开辟新的内存空间。btw,楼主的样例程序是没有实际意义的。
      

  5.   

    变量在java中都是引用,
    如果在循环中声明变量,那么就意味着要进行100次的创建;
    如果在循环外声明变量,那么就只是重新赋值而已
      

  6.   

    变量在java中都是引用,
    如果在循环中声明变量,那么就意味着要进行100次的创建;
    如果在循环外声明变量,那么就只是重新赋值而已
      

  7.   

    变通啦,如果你觉得没有明显的慢就用,反之则在外面声明。没有定式的……:)另,new会依次分派1..100个对象。只不过只有一个被引用,可以不用去管,让gc忙去吧!