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