日期:2014-05-20  浏览次数:20880 次

用for循环new出新的对象在内存中是怎么工作的
如下这个代码new出了10个k为什么没有说重复定义啊 ,要是Kit k = new Kit(); Kit k = new Kit();这样连写两个就会说重复定义的,哪位大侠和我讲讲下面的程序在内存中是怎么工作的怎么分配内存的。
Java code

public class KitCircle1 {
    public static void main(String[] args){
        for(int i=0; i<10 ;i++) {
            Kit k = new Kit();
        }
    }
}

class Kit {
    int id;
}



------解决方案--------------------
k的作用域是在for的花括号里{}
一次循环结束,走到花括号的}时,k就生命结束了
下次进入循环,从新进入花括号,重新生成一个k
LZ可以试试这样的代码
Java code
for(int i=0; i<10 ;i++) {
    {Kit k = new Kit();} //放到一个花括号里
     Kit k = new Kit(); //这样是不会有问题的,但是把上下两句换个位置就有问题了,没有花括号的那句换到上面的话,因为它的的生命周期在for的花括号里,这样就造成带花括号的那句重复定义了
}