Java面向对象-方法的值传递和引用传递
方法的值传递:
值传递 在方法里改变变量的值 作用范围仅仅是方法里 对外面不影响:
上代码:
package com.java1234.chap03.sec03;
public class Person {
void speak(int age){
System.out.println("我今年"+age+"岁了");
age=24; // 作用范围是方法里
}
public static void main(String[] args) {
Person xiaoli=new Person();
int age=23;
xiaoli.speak(age);
System.out.println(age);
}
}引用传递,传递的是地址,对象里的属性在方法里值修改,对外面有影响,我们通过对象.属性可以获取到最新的数据;
上代码:
package com.java1234.chap03.sec03;
class SanWei{
int b; // 胸围
int w; // 腰围
int h; // 腿围
}
public class Person {
void speak(int age,SanWei sanWei){
System.out.println("我今年"+age+"岁了,我的三围是:"+sanWei.b+","+sanWei.w+","+sanWei.h);
age=24; // 作用范围是方法里
sanWei.b=80; // 胸围改成80
}
public static void main(String[] args) {
Person xiaoli=new Person();
int age=23;
SanWei sanWei=new SanWei();
sanWei.b=90;
sanWei.w=60;
sanWei.h=90;
// age传递的是值 ,sanWei是对象,传递的是引用(地址,c里叫指针)
xiaoli.speak(age,sanWei);
System.out.println(age);
System.out.println(sanWei.b);
}
}下面我们给下内存示意图:
