java 中方法调用的奇怪问题

public class Test {

/**
 * @param args
 */
public static void main(String[] args) {
    List<String> lista = new ArrayList<String>();
    List<String> listb = new ArrayList<String>();
    Test tt = new Test();
    listb.add("123456");
    tt.tl(lista, listb);
    System.out.println(lista.size());
    System.out.println(listb.size());
}

public void tl(List<String> a,List<String> b){
    a = b;
    System.out.println(a == b);
}


打印结果
true
0
1

哪里奇怪了。??....

你在函数中修改a b的值,不会反应到它们的实参上。这和你传一个整数作为参数,在函数中改变,是一样的。

图片说明
java中都是值传递,

你将a b 作为参数 , 在那个方法内对a赋值,此时a的作用域在这个方法内,当这个方法时他的作用域就发生了改变,也就是说a还是为空,所以才会用输出size位0