为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕神8447489 2019-04-17 18:19:41
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 ?
查看完整描述

3 回答

?
BIG阳

TA贡献1859条经验 获得超6个赞

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


查看完整回答
反对 回复 2019-05-06
?
慕哥9229398

TA贡献1877条经验 获得超6个赞

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


查看完整回答
反对 回复 2019-05-06
?
开心每一天1111

TA贡献1836条经验 获得超13个赞

static修饰的变量只有一份你改就该那个值用的也是那个值


查看完整回答
反对 回复 2019-05-06
  • 3 回答
  • 0 关注
  • 1320 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号