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

时间:2020-12-22 17:24:15

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


方法的值传递:

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


上代码:

12345678910111213141516 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);    }}


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

上代码:

1234567891011121314151617181920212223242526272829 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);    }}


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

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