Java参数传递

 1 /**
 2  * 
 3  *    堆栈中放基本类型变量的值,放引用类型变量的地址
 4  *    堆中放真正的对象(new出来的)
 5  */
 6 public class Reference {
 7     public static void main(String[] args) {
 8         
 9         
10         AAA aaa=new AAA();    
11     
12         BBB bbb=new BBB();
13         
14         bbb.change1(aaa);//将对象变量aaa传入BBB类的方法change1中
15         System.out.println(aaa.name);//测试打印
16         bbb.change2(aaa);//将对象变量aaa传入BBB类的方法change2中
17         System.out.println(aaa.name);//测试打印
18     }
19 }
20 
21 //创建一个类AAA,包含一个name属性
22 class AAA{
23     
24     String name;//定义一个变量name
25     
26     
27     public String getName() {//其他类调用此方法就可以得到属性name
28         return name;
29     }
30 
31     public void setName(String name) {//其他类调用此方法就可以设置属性name
32         this.name = name;
33     }
34 }
35 
36 
37 //创建一个类BBB,BBB类中有一些可以改变属性name得方法
38 class BBB{
39     
40     void change1(AAA 传入的对象变量){//改变这个name属性的第一种方法(属性name被protect修饰时,即默认修饰(就是啥也没写))
41             //这里       传入的对象变量:就是aaa
42     
43             传入的对象变量.name="随便改";//设置name的值为:随便改
44                                       //name此时在堆中的值为:随便改
45     }
46     
47     void  change2(AAA 传入的对象变量){//改变这个name属性的第二种方法(属性name被private修饰时)
48         
49         String a;//当程序运行到此句时,定义一个用于接收修改后地址得变量a(存放在堆栈中,无指向,值为null)
50         
51             a="还是随便改";//当程序运行到此句时,变量a获得一个指向,现在a指向存放于堆中的AAA类的对象中的属性name
52             
53             传入的对象变量.setName(a);//通过对象变量aaa调用对象的getname方法,将属性name的值改为:还是随便改
54         
55     }
56 }
原文地址:https://www.cnblogs.com/Wzqy-yy/p/8086614.html