关于java引用传递,对象调用的实验

闲话少说线上代码,在给分析

/**
 * @Auther: qianshanmuxue
 * @Date: 2019/3/21 09:53
 * @Description:
 */
public class test {
    class A{
        String a;
        String name;
        public String getA() {
            return a;
        }
        public void setA(String a) {
            this.a = a;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        @Override
        public String toString() {
            return a+name;
        }
    }

    public void a(){
        A a=new A();
        a.setA("a");
        a.setName("is a ");
        System.out.println("1"+a.getA()+":"+a.getName()+":"+a.toString());
        b(a);
        System.out.println("2"+a.getA()+":"+a.getName()+":"+a.toString());
    }
    public void b(A a){
        a.setName(" is b");
        a.setA(" b is ");
        System.out.println("3"+a.getA()+":"+a.getName()+":"+a.toString());
    }

    public static void main(String [] a){
        test t=new test();
        t.a();
    }
}

运行结果:

可以发现在调用b方法后,对象A的值已经发生改变

说明引用传递(对象传递)后对象的属性如果发生改变,那么返回原方法后对象的属性就已经发生改变。

实质分析:引用传递,在java机制中传递的是对象在内存中的地址,可以这样理解,

1.a方法:在内存中new了一个对象=a在某个楼盘要建个房子,先买了楼盘,打了地基,建了毛坯房等操作;

2.现在a方法调用b方法:把这个对象交给b,b再修改了对象的属性=现在a吧房子地址发给b,请b过来进行装修,b进行装修后就离开了;

3.a又重新接管房子的,房子还是在那个地址没变,但是房子的属性却变了==对象地址未发生改变,对象的属性发生了改变。

4.可能接下a又要调用c,d,e来进行干一些其他的事情,比如改装,装水电啊之类的,房子的属性继续发生改变,但是地址依旧不变;

5.可能c,d,e...之类的又调用F,G装厕所,通下水道等等,是一个原理。属性发生变化,但是地址不会发生变化。

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值