复习一下忘记的知识点。

引用传值

Java中都是传值的,但由于传递的是一份对象引用的拷贝进行传递的,但是原引用和拷贝的引用依旧指向的是中的同一份值,因此修改值后,也会更改原有值。

基本类型如下,这些类型一定是传值:

byte short int long float double char boolean

像int数组、String这种,都不是基本类型。传参时直接拷贝,会修改原有值

public static void AddArray(int[] a){
    for(int i=0; i<a.length; i++) a[i]++;
}
public static void main(String[] args) {
    int[] a = {1,2,3,4,5};
    AddArray(a);
    for(int num:a) System.out.println(num);
}
//输出2,3,4,5,6

注意:如果是以下情况,原数组的值不变

// for each
public static void AddArray(int[] a){
    for(int num:a) num++;
}
// 创建副本
public static void AddArray(int[] a){
    int[] tmp = a.clone();
    for(int i=0; i<tmp.length; i++) tmp[i]++;
}

原因是for-each循环的时候,每次都是新建一个int赋值,对应的地址不同