list.add() 添加对象时为什么显示的都是最后一个对象的属性?以前添加的值被覆盖了

  • import java.util.ArrayList;
    import java.util.List;

    public class Listaa {
    private static List list = new ArrayList();

    private static int i;
    
    public static void maain(int i) {
        Listaa t = new Listaa();
        t.setI(i);
        list.add(t);
    }
    
    public static void main(String args[]) {
        Listaa a = new Listaa();
        for (int i = 0; i < 3; i++)
            maain(i);
        for (int i = 0; i < list.size(); i++) {
    
            a = (Listaa) list.get(i);
            System.out.println(a.getI());
        }
    }
    
    public int getI() {
        return i;
    }
    
    public void setI(int i) {
        this.i = i;
    }

    }
    输出结果是 2 2 2,为什么不是 0 1 2 ?


慕神8447489
浏览 1312回答 3
3回答

BIG阳

static静态变量是属于类的变量,任何时候只有一份,你在循环中给这个变量的赋值了3次,第3次赋值覆盖了前两次,所以最终的结果是 2 2 2

慕哥9229398

注意你的i值是静态变量,你最后一次设立i的值是2,那所有对象的的i值都变成了2。

开心每一天1111

static修饰的变量只有一份你改就该那个值用的也是那个值
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java