Java assignment pass, reference type pass address, basic data type pass value

import java.util.Arrays;

public class TestNineArrayTest {

    public static void exchange(int[] arr){
        System.out.println(Arrays.toString(arr));
        //引用类型进行值传递,传递的是对应的空间地址,类似python的浅拷贝
        //进行数组中的值交换位置,后续调用该方法后再输出改数组是交换后的数组
        int temp = arr[0];  //基本数据类型进行的赋值是值传递
        arr[0] = arr[1];   //基本数据类型进行的赋值是值传递
        arr[1] = temp;   //基本数据类型进行的赋值是值传递
        System.out.println(Arrays.toString(arr));
    }


    public static void main(String[] args) {

        // 1.声明int类型的数组ages  int[] ages   2.在堆中初始化数据  new int[]{20,15,18,25}  3.把被初始数组的地址赋值给ages变量
        int[] ages = new int[]{20,15,18,25};
        System.out.println(ages);

        //在堆中初始化一个新的数据组,把数组的地址重新赋值给ages
        ages = new int[]{50,20,32,19};
        System.out.println(ages);
        System.out.println(Arrays.toString(ages));

        //调用上面的exchange方法
        int[] arr = new int[]{20,10};
        exchange(arr); //此处传递的是数组    引用类型传递的是地址
        //调用exchange方法执行后,arr数组的值发生了交换,但是空间地址指向没有改变,地址传递,此处打印得到是交换后的数组
        System.out.println(Arrays.toString(arr));

    }
}

 

Guess you like

Origin blog.csdn.net/dance117/article/details/108658861