今天写代码的时候,看了老大的代码,有一个地方没有理解

他在一开始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

 

果然,在调用方法的时候,有两种方式,值传递引用传递  引用传递传的是对象的地址,和值传递不一样!!又因为基础问题纠结了一次。