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

Posted 天再高,踮起脚尖就能更接近阳光

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

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

 

以上是关于Java面向对象-方法的值传递和引用传递的主要内容,如果未能解决你的问题,请参考以下文章

Java中的值传递和引用传递

Java中的值传递和引用传递

Java String引用传递问题

070Java面向对象之深入贯彻对象引用传递

java基础day7

java 面向对象:类结构 方法 java的值传递机制