Java数值传递的时候,到底是引用传递还是值传递

java中既有引用传递也有值传递    ----》》方法形式参数上 
1.值传递,基本数据类型
值传递是:传递的是存储单元中的内容,而不是存储单元的引用。

2.引用传递:引用类型,数组,集合。
引用传递的是内存地址。

对于基本数据类型来说 “=”赋值操作是直接改变内存地址(存储单元)上的值。
对于引用类型来说 “=” 赋值操作是改变引用变量所指向的内存地址(上文中存储单元)。

总结:
函数参数传递其实是一个赋值的过程,基本类型传递的是数值,引用类型传递的引用对象的内存地址。
另外一点要特别注意,函数的参数其实是函数内部的局部变量。不要跟外部变量混淆。

值传递代码实现

public class AA{
      public static void main (String[] args){
	      int a = 10;
	      int b = 20;
	      change(a,b);
	      System.out.println(a);//a=10
	      System.out.println(b);//b=20
      }
      public static void change(int a,int b){
	      a = a + b ;//a=30
              b = b + a ;//b=50
      }
}

引用传递代码实现

public class BB{
      public static void main (String[] args){
          int[] arr={10,20};
          changeArray(arr);
          System.out.println(arr[0]);//30
          System.out.println(arr[1]);//50
      }
    public static void change(int[] arr){//传递的是地址
	  arr[0] = 30;
          arr[1] = 50;
      }
}
posted @ 2020-11-16 22:34  MikiKawai  阅读(219)  评论(0编辑  收藏  举报