转载:http://bbs.csdn.net/topics/390030699/
http://www.jb51.net/article/36953.htm
public static void main(String[] args){
Person Zhang3 = new Person("Zhang3");
Zhang3.age[0] = "20";
Person Li4;
Li4 = Zhang3;
//zhang3 的姓名,年龄改变之后.Li4的年龄也跟着改变了
Li4.name = "Zhang3 name changed";
Li4.age[0] = "Zhang3 age changed";
System.out.println(Zhang3.name +" "+Zhang3.age[0]);
List mList = new ArrayList();
mList.add(Zhang3);
NewObject newObject = new NewObject();
newObject.setList(mList);
mList.get(0).name = "name changed3";
//解释:2个List引用的是同一个堆得 内存地址, 改变其中一个对象,相应得也会改变另外一个对象得值!
System.out.println( newObject.list.get(0).name);
}
解答:都是对对象进行操作,同一个引用.所以会改变相应得值
问题:项目中adapter中List跟新,不起作用?
mList = getRecordEntities(); // 这是赋值语句!引用了个新的对象
//mList = null; // 这是赋值语句!引用了个新的对象,adapter中得List数据源不会被置空!
mList.clear(); //这个才是对以前得内存地址做操作.清空.所以adpter中的List数据源也会被置空!
//mAdapter.setList(mList);
mAdapter.notifyDataSetChanged();
解答:因为虽然activity中得mList赋值引用到了,另一个对象地址,不是原先得地址了,所以再次对mList操作 就不会影响到adapter中得List对象了!
理解JAVA中得深拷贝,浅拷贝