关于java中基础数据类型传值和引用类型传值的总结

Posted water2wine

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于java中基础数据类型传值和引用类型传值的总结相关的知识,希望对你有一定的参考价值。

先看一组代码:

public static void main(String[] args) {
        int a = 1;
        int b = 2;
        int[] array = {1,2};
        swap(a, b);
        System.out.println(a + " " + b);
        swap(array, 0, 1);
        System.out.println(array[0] + " " + array[1]);
    }
    public static void swap(int x,int y){
        int z = x;
        x = y;
        y = z;
    }
    public static void swap(int[] array,int x,int y){
        int xx = array[x];
        int yy = array[y];
        array[x] = yy;
        array[y] = xx;
    }

最后结果分别是1,2(基础数据类型传值);2,1(引用数据类型传值)

基础数据类型传值和引用数据类型传值的区别

基本变量类型:

在方法中定义的非全局基本数据类型变量的具体内容是存储在栈中的

引用变量类型:

只要是引用数据类型变量,其具体内容都是存放在堆中的,而栈中存放的是其具体内容所在内存的地址

! 地址的区别

在方法中定义的非全局基本数据类型变量,调用方法时作为参数是按数值传递的

也就是说

public static void swap(int x,int y)

这里的x和y实际上是新开创的地址,然后将外部的a和b的数值复制而成的。
因此在方法内部对x和y的任何操作都不会对外部的a和b造成影响

引用数据类型变量,调用方法时作为参数是按引用传递的

public static void swap(int[] array,int x,int y)

我们可以看到,这里传进去的x和y,是array数组的下标。
也就是说,所谓引用传递,就是说传进方法内的是外部a和b两个数所在的地址
因此,在方法内部,是对计算机底层对应地址中的数进行操作,由于外部的数实际上就是对应地址中的值,所以外部的数也就被改变了。

以上是关于关于java中基础数据类型传值和引用类型传值的总结的主要内容,如果未能解决你的问题,请参考以下文章

java线程传值的问题

java中后台向前端传值的几种方式

Java 中的传值与传引用

Java学习笔记:具体解释传值和传引用

go语言---传值和传引用

Js 赋值传值和引用传址