java的函数参数传递
java中只有一种参数传递方式:传值;这点和c++不一样,c++中有传值和引用两种方式。虽然java只有传值这
一种传递方式,但是根据参数类型的不同,函数对参数的影响也会不一样。可以这么说:形参是实参的一份拷贝,
当参数类型是基本数据类型时,对形参的处理不影响实参,也就是你想通过形参交换两个实参是行不通的;当形参
是对象时(事实上,是对象的引用),形参和实参指向的是同一个对象,所以通过形参对对象进行操作会影响实参
所指向的对象。我们看看下面的swapList函数
//交换两个list对象
public static void swapList(List<Integer> listA,List<Integer> listB){
List<Integer> temp = listA;
listA=listB;
listB=temp;
}
执行这个函数
List<Integer> liA=new ArrayList<Integer>();
List<Integer> liB=new ArrayList<Integer>();
int x=3;
int y=5;
liA.add(x);
liB.add(y);
swapList(liA,liB);//交换
for(int each:liA)
System.out.println(each);
发现打印出来的liA里面的元素还是3,说明交换没有成功,仔细想一下,就会发现执行swapList函数,listA、listB
分别是liA、liB的一份拷贝,listA与listB交换,listA指向了原来listB指向的对象,listB指向了原来listA指向的
对象,但是对listA和listB的处理不影响liA、liB。所以liA和liB还是分别指向原来的对象。
最后,python的参数传递方式与java基本一致。