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
下面我们给下内存示意图: