JAVA 函数补充-——传参实质

这些内容虽然枯燥,但多读几遍,就可以理解传参问题,这样可以更好理解函数。

基本数据类型 是原子型数据 就是不可再拆分
引用数据类型 是复合型数据 当前对象数据中,其实还包括了其他更多的子数据
复合型数据 指的就是由多个基本数据或其他引用数据组成的一个数据

基本数据类型传参 传的是常量在常量池中的地址
引用数据类型传参 传的是对象在堆内存中的地址
记住一点,实参——>形参 传的永远是地址

形参变量永远不可能去改变实参中已储存的数据地址 除非return 实参且接收
就算形参变量所存储的数据地址被改变 那也是改变形参自己 与实参无关

【实参本身指向的是一个对象
  然后把这个对象的地址传递给了形参
  形参就可以通过该地址去堆内存中找对象,可以修改对象中的数据
  实参再去访问对象时,对象中的数据就已经被改变
  因为实参和形参目前使用操作的都是同一个对象!】

        终结总结:
        无论实参还是形参 实参就是把变量空间所存的地址给了形参而已
        他们都是变量!
        所以对于变量的修改而言,主要分两种!
        1.要么改变该变量空间所存储的地址
        int a=3;  
        a=7;
        int[] arr=new int[]{3,7};
         return arr=new int[]{7,3};//主函数在接收一下。
        2.要么改变该变量空间所存储的地址所指向的那个对象中的数据
        int[] arr=new int[]{3,7};
        arr[0]=7;  arr[0]=3;
        对与基本数据类型而言,能否支持2操作 不能!

class Test02{
    public static void main(String[] args){
        int a=3;
        int b=7;
        swap(a,b);
        System.out.printf("a=%d,b=%d\n",a,b);

        int[] arr={3,7};
        swap(arr[0],arr[1]);
        System.out.printf("arr[0]=%d,arr[1]=%d\n",arr[0],arr[1]);
        
        swap(arr);
        System.out.printf("arr[0]=%d,arr[1]=%d\n",arr[0],arr[1]);

        swap2(arr);
        System.out.printf("arr[0]=%d,arr[1]=%d\n",arr[0],arr[1]);

    }
    public static void swap(int m,int n){//改变了形参数据,对实参指向的地址中的数据无影响
        m=7;
        n=3;
    }
    public static void swap(int[] arr){//改变该变量空间所存储的地址所指向的那个对象中的数据
        arr[0]=7;
        arr[1]=3;
    }
    public static void swap2(int[] arr){//改变该变量空间所存储的地址
        arr=new int[]{7,3};
    }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值