方法参数是基本类型和引用类型的区别

来源:互联网 发布:淘宝导航栏怎么装修 编辑:程序博客网 时间:2024/06/05 18:28

1 方法参数是基本类型时,传递的是值。
2 方法参数是引用类型时,传递的是内存地址值

public class MethodDemo_3{    public static void main(String[] args){        /*int a = 1;        int b = 2;        change(a,b);        System.out.println(a); //1        System.out.println(b); // 2        */        int[] arr = {1,2,3,4};        System.out.println(arr[2]); // 3        change(arr);        System.out.println(arr[2]); //  100    }    public static void change(int[] arr){        arr[2] = 100;    }    public static void change(int a,int b){        a = a+b;        b = b+a;    }}

当参数是基本类型时,在调用方法时将值传递到方法中,运行方法,运行结束方法退出,对原本main中定义的变量没有任何操作(没有return),所以注释处输出仍为1和2。
这里写图片描述
当参数是引用类型时,定义数组时,在堆内存中存储了数组的数据,返回这组数据的地址给了arr,然后在调用方法时,传递的也是这个地址。在chang方法中,同样也是根据这个地址找到数组的信息,然后改变了这个数据的【2】数据,所以之后main方法输出时,输出的是改变了之后的数组。


也就是说 ,当参数是基本类型时,方法传的只是值,实际上main 里的a和chang方法里的a是不同的两个东西,如果方法不返回值,change里不管怎么改变,与main无关。
而引用类型时,两个方法通过同一个地址,使用的是同一个堆内存里的数组,是同一个东西,所以change方法里面改变了这个数组的之后,main再调用也是改变之后的数组