从不耐烦的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 回答
![?](http://img1.sycdn.imooc.com/533e4c9c0001975102200220-100-100.jpg)
跃然一笑
TA贡献1826条经验 获得超6个赞
您不是在重新分配“ a”
a.m_name = "Bob";
尝试这样做
a = new Person("Bob", 20);
那么您将获得与您列出的字符串示例相似的行为。
添加回答
举报
0/150
提交
取消