引用类型(reference type)指向一个对象,不是原始值,指向对象的变量是引用变量。
在java里面除去基本数据类型的其它类型都是引用数据类型,自己定义的class类都是引用类型,可以像基本类型一样使用。
在传参中,引用类型对象的值的一个副本传入方法,原对象没改变,传入的副本重新赋值。
public class Test8 {
public void cc(String str){
System.out.println(3+str);
str = "no";
System.out.println(4+str);
}
public static void main(String[] args) {
String s = new String("aaa");
Test8 t = new Test8();
System.out.println(1+s);
t.cc(s);
System.out.println(2+s);
}
}
---------------------------------------
1aaa
3aaa
4no
2aaa
引用类型改变的是其内的属性值,其本身不变。
***********************************************************************
Map<String, Object> map = null;
List<BaseBean> beanlist = new ArrayList<BaseBean>();
for(int i=0;i<list.size();i++){
map = list.get(i);
basebean = new BaseBean();
basebean.setOrder_seq(map.get("ZBORDERID")+"");
basebean.setSequen((map.get("TEAMORDERID")+""));
basebean.setPassName((map.get("PASSNAME")+""));
basebean.setCardNO((map.get("DOCNUMBER")+""));
beanlist.add(basebean);
}
arraylist.add(basebean) 增加的是basebean对象的内存地址,如果for循环中,每次不重新产生新对象【basebean = new BaseBean();】,那么每次添加的都是同一个basebean对象,arraylist会以最后一次的内存地址为准!结果如下:
BaseBean [sequen=325690, order_seq=392240, passName=ODS/Thor, cardNO=G666666]
BaseBean [sequen=325690, order_seq=392240, passName=ODS/Thor, cardNO=G666666]
BaseBean [sequen=325690, order_seq=392240, passName=ODS/Thor, cardNO=G666666]
BaseBean [sequen=325690, order_seq=392240, passName=ODS/Thor, cardNO=G666666]
BaseBean [sequen=325690, order_seq=392240, passName=ODS/Thor, cardNO=G666666]
BaseBean [sequen=325690, order_seq=392240, passName=ODS/Thor, cardNO=G666666]