A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jinxiaodong 中级黑马   /  2016-1-3 09:50  /  1008 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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。求大神帮忙详细解释下。

2 个回复

倒序浏览
本帖最后由 安仔 于 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
回复 使用道具 举报
安仔 发表于 2016-1-3 11:39
因为你存储进List的是同一个对象data,你可以采用
来测试我说的问题。相当于你存Person对象,你存多少个lis ...

谢谢解答{:3_65:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马