函数传参

 函数传参一直是一个比较重要的点,今天我就详细解释一下。

 最重要的一点:实参-->形参,传的永远是地址

  1. 基本数据类型传参------传的是常量在常量池中的地址
  2. 引用数据类型传参------传的是对象在堆内存中的地址

    基本数据类型和引用数据类型的区别

  • 基本数据类型------原子型数据,就是不可再拆分。基本类型就是直接赋值就可以了,比如:

    inta=123;       boolean=true;

  • 引用数据类型------复合型数据,在当前的对象数据中,还包括了其他更多的子数据。所谓复合型数据,指得就是有多个基本数据或其他引用数据组成的一个数据。引用类型一般都是通过new关键字创建对象,然后把这个对象赋予给相应的变量,最常用的引用类型是String类型,它也比较特殊,可以直接通过关键字new来创建对象,也可以通过字符串直接赋值,比如:                Strings=newString("abc");             Strings="abc";

 


传参的具体分析:

  • 形参变量永远不可能去改变实参中已储存的数据地址 除非return 实参且接收。
  • 就算形参变量所存储的数据地址被改变 那也是改变形参自己 与实参无关
  • 无非是:实参本身指向的是一个对象,然后把这个对象的地址传递给了形参,形参就可以通过该地址去堆内存中找对象,可以修改对象中的数据,实参再去访问对象时,对象中的数据就已经被改变,因为实参和形参目前使用操作的都是同一个对象!
  • 无论实参还是形参 实参就是把变量空间所存的地址给了形参而已。他们都是变量!
  • 对于变量的修改而言,主要分两种:

           1.要么改变该变量空间所存储的地址

                int a=3;  

                a=7;  //改变空间所存储的地址

                int[] arr=new int[]{1,2,3};

                arr=new int[]{3,2,1};   //改变空间所存储的地址 

          2.要么改变该变量空间所存储的地址所指向的那个对象中的数据

               int[] arr=new int[]{1,2,3};

               arr[0]=10;   //改变该变量空间所存储的地址所指向的那个对象中的数据

    对与基本数据类型而言,不能支持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);
    }
    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){//0xabc
        arr=new int[]{10,20};
    }
}

结果展示:

 

那么今天我们的传参的相关问题就说完了,这是很重要的,一定要搞明白!!!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值