无论python等解释型语言,还是java等编译型语言,在参数传递时,
对于 数字、字符串等不可变的基本类型数据,采用的是值传递
对于数组array、列表list、字典等对象型数据,采用的是引用传递(弱引用、浅复制)
#举例
##值传递
python
>>> a=2
>>> def func(a):
... a=3
...
>>> func(a)
>>> a
2
>>>
java
public class Value {
private static void change(String value) {
value = "yang_chun_lian";
}
public static void main(String[] args) {
String testValue = "runner";
change(testValue);
System.out.println(testValue);
}
}
运行结果:runner
##引用传递
python
>>> a=[1]
>>> def func(a):
... a[0]=2
...
>>> func(a)
>>> a
[2]
>>>
java
import java.util.ArrayList;
import java.util.List;
public class Reference {
private static void change(List<Integer> list) {
list.add(2);
list = new ArrayList<>();
list.add(3);
}
public static void main(String[] args) {
List<Integer> testList = new ArrayList<>();
testList.add(1);
change(testList);
System.out.println(testList);
}
}
运行结果:[1, 2]