今天写代码的时候,看了老大的代码,有一个地方没有理解
他在一开始new ArrayList(),然后把list传入各种方法中,在各个void方法中根据条件add(),最后对这个list操作。
【疑问】:我咋记得JAVA中是值传递啊?list传进去以后,经过各种操作又不返回,最后操作的时候不是还是空List吗?
我做了个实验
@Test public void test01(){ int i=2; add(i); System.out.println(i); } public void add(int i){ i++; }
输出结果是2,我还以为自己是对的,经过去数据库查询,list确实不是空,那是为啥?
突然想到 传入的是对象,我传的是值,是基本数据类型!!!
@Test public void test02(){ List<String> a=new ArrayList<>(); addElement(a); Iterator<String> iterator = a.iterator(); while (iterator.hasNext()){ System.out.println(iterator.next()); } } public void addElement(List<String> a){ a.add("AAA"); }
结果:AAA
果然,在调用方法的时候,有两种方式,值传递和引用传递 引用传递传的是对象的地址,和值传递不一样!!又因为基础问题纠结了一次。