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

Java方法传值解析
本文详细解释了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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值