值传递

值传递:调用一个方法的时候,传递给方法的参数 ,实际上传递变量所存储的值。

即:基本数据类型变量传递的变量的值。引用数据类型变量传递的是变量中存放的内存地址(也是变量的值)。

基本类型变量存在栈中;引用类型变量也在栈中,但是其所指的内容在堆得内存空间中。

代码如下:

 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 }
View Code

理解传递的本质:变量的传递就是值得传递。

原文地址:https://www.cnblogs.com/nicker/p/6115844.html