Java面向对象-方法的值传递和引用传递

Java面向对象-方法的值传递和引用传递

方法的值传递:

值传递 在方法里改变变量的值 作用范围仅仅是方法里 对外面不影响:

上代码:

 1 package com.java1234.chap03.sec03;
 2  
 3 public class Person {
 4  
 5     void speak(int age){
 6         System.out.println("我今年"+age+"岁了");
 7         age=24; // 作用范围是方法里
 8     }
 9      
10     public static void main(String[] args) {
11         Person xiaoli=new Person();
12         int age=23;
13         xiaoli.speak(age);
14         System.out.println(age);
15     }
16 }

运行结果

我今年23岁了
23

引用传递,传递的是地址,对象里的属性在方法里值修改,对外面有影响,我们通过对象.属性可以获取到最新的数据;

上代码:

 1 package com.java1234.chap03.sec03;
 2  
 3 class SanWei{
 4     int b; // 胸围
 5     int w; // 腰围
 6     int h; // 腿围
 7 }
 8  
 9 public class Person {
10  
11     void speak(int age,SanWei sanWei){
12         System.out.println("我今年"+age+"岁了,我的三围是:"+sanWei.b+","+sanWei.w+","+sanWei.h);
13         age=24; // 作用范围是方法里
14         sanWei.b=80; // 胸围改成80
15     }
16      
17     public static void main(String[] args) {
18         Person xiaoli=new Person();
19         int age=23;
20         SanWei sanWei=new SanWei();
21         sanWei.b=90;
22         sanWei.w=60;
23         sanWei.h=90;
24         // age传递的是值 ,sanWei是对象,传递的是引用(地址,c里叫指针)
25         xiaoli.speak(age,sanWei);
26         System.out.println(age);  
27         System.out.println(sanWei.b);
28     }
29 }

 运行结果

我今年23岁了,我的三围是:90,60,90
23
80

下面我们给下内存示意图:

原文地址:https://www.cnblogs.com/eaglezb/p/5969285.html