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