黑马程序员技术交流社区

标题: 求详细解释 [打印本页]

作者: jinxiaodong    时间: 2016-1-3 09:50
标题: 求详细解释
  1. public class Test1 {
  2.         public static void main(String[] args){
  3.                 Data data=new Data();
  4.                 ArrayList<Data> list=new ArrayList<Data>();               
  5.                 for(int i=100;i<103;i++){
  6.                         data.val=i;
  7.                         list.add(data);
  8.                 }               
  9.                 for(Data d:list){
  10.                         System.out.println(d.val);
  11.                 }
  12.         }
  13. }
  14. class Data{
  15.         int val;
  16. }
复制代码



为什么结果不是100,101,102,而是102,102,102。求大神帮忙详细解释下。
作者: 安仔    时间: 2016-1-3 11:39
本帖最后由 安仔 于 2016-1-3 11:41 编辑

因为你存储进List的是同一个对象data,你可以采用
  1.          Data data0 = list.get(0);
  2.          Data data1 = list.get(1);
  3.          System.out.println(data0.equals(data1));
复制代码

来测试我说的问题。相当于你存Person对象,你存多少个lisi对象,你最终都将年龄设置为103,那怎么取这个对象,lisi的年龄都是103

作者: jinxiaodong    时间: 2016-1-4 08:02
安仔 发表于 2016-1-3 11:39
因为你存储进List的是同一个对象data,你可以采用
来测试我说的问题。相当于你存Person对象,你存多少个lis ...

谢谢解答{:3_65:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2