值传递:调用一个方法的时候,传递给方法的参数 ,实际上传递变量所存储的值。
即:基本数据类型变量传递的变量的值。引用数据类型变量传递的是变量中存放的内存地址(也是变量的值)。
基本类型变量存在栈中;引用类型变量也在栈中,但是其所指的内容在堆得内存空间中。
代码如下:
1 class Demo 2 { 3 public static void main(String[] args) 4 { 5 /* 6 int a = 3; 7 int b = 5; 8 changeValue(a,b); 9 System.out.println("交换之后的值:a = "+a +" b="+b); 10 11 int[] arr = {23,10,9}; 12 changeArr(arr,1,2); 13 System.out.println("数的元素:"+ Arrays.toString(arr));// 9 ,10 14 */ 15 Person p = new Person(); 16 changeObj(p,20); 17 System.out.println("x = "+ p.x); 18 } 19 20 public static void changeObj(Person p ,int x){ 21 p.x = x; 22 } 23 24 25 26 27 //需求2: 定义一个函数交换数组中两个 元素的位置。 28 public static void changeArr(int[] arr , int index1, int index2){ 29 int temp = arr[index1]; 30 arr[index1] = arr[index2]; 31 arr[index2] = temp; 32 33 } 34 35 36 37 //需求1:定义一个函数交换两个基本类型变量的值。 38 public static void changeValue(int a , int b){ 39 int temp = a; 40 a = b; 41 b = temp; 42 System.out.println("方法内部交换的值:a = "+a +" b="+b); 43 } 44 45 }
理解传递的本质:变量的传递就是值得传递。