为了账号安全,请及时绑定邮箱和手机立即绑定

Java:对象引用和重新分配

Java:对象引用和重新分配

守候你守候我 2021-04-15 18:13:05
从不耐烦的Core Java中:变量只能保存对对象的引用...我像这样尝试,它似乎可以工作:public class Person{    public String m_name;    public int m_age;    Person (final String name, final int age){        m_name = name;        m_age = age;    }    public static void main(String[] args){        Person a = new Person("John", 45);        Person b = a;        System.out.printf("Person a is %s, aged %d\n", a.m_name, a.m_age);        System.out.printf("Person b is %s, aged %d\n", b.m_name, b.m_age);        a.m_name = "Bob";        System.out.printf("Person a is now %s, aged %d\n", a.m_name, a.m_age);        System.out.printf("Person b is now %s, aged %d\n", b.m_name, b.m_age);    }}/*Output:Person a is John, aged 45Person b is John, aged 45Person a is now Bob, aged 45Person b is now Bob, aged 45*/但是,它似乎不仅仅适用于String对象或基本类型(尽管,从类实例的意义上讲,后者并不是对象):String aS = "John";String bS = aS;aS = "Bob";System.out.println(aS + '\n' + bS);/*Output:BobJohn*/int a = 10;int b = a; a = 5; System.out.printf("a = %d, b = %d", a, b);/*Output:a = 5, b = 10*/我想知道为什么要这样二分法吗?谢谢ps:Person类的属性是公共的,以避免此简单示例的更改器,访问器
查看完整描述

1 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

您不是在重新分配“ a”

a.m_name = "Bob";

尝试这样做

a = new Person("Bob", 20);

那么您将获得与您列出的字符串示例相似的行为。


查看完整回答
反对 回复 2021-04-28
  • 1 回答
  • 0 关注
  • 254 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信