java中对象给对象赋值

java中对象给对象赋值

package com.java.god;

public class A {

    private int m_A;

    public int getA(){
        return m_A;
    }

    public void setA(int a) {
        m_A = a;
    }

}

public class Test {
    public static void main(String[] args) {

        A a1 = new A();
        a1.setA(10);    //通过成员方法给对象a1赋值
        A a2 = a1;      //将对象a1通过“=”赋给对象a2;

        System.out.println(a1==a2);
        System.out.println(a1.getA());
        System.out.println(a2.getA());

        a1.setA(20);
        System.out.println(a1==a2);
        System.out.println(a1.getA());
        System.out.println(a2.getA());

    }
}

运行结果如下图所示,
在这里插入图片描述
在java中,通过“=”将已经实例化的对象赋给另一个对象时,是将这个对象的引用传过去了,所以实际上它们两个指向的是同一块内存地址,也就是指向了同一个对象,所以a1==a2的值为true。
所以当a1改变了这个对象的属性值,那么a2访问时也就得到的是改变了的属性值了。

下面是我画的JVM内存图,
在这里插入图片描述
实际上,在java中创建对象时,在堆区通过运算符new出来的这一部分内存空间中存放的所有成员叫做对象,前面的a1是在栈区的一个局部变量名,它里面存放了这个对象在堆区的内存地址。
所以在我们在进行 A a2 = a1; 这一步操作时,就是将a1中保存的对象的内存地址通过值传递传给了a2,让a2也指向这个对象。

参与评论 您还未登录,请先 登录 后发表或查看评论
相关推荐

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页

打赏作者

asdaafaf

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值