從不耐煩的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對象或基本類型(盡管,從類實(shí)例的意義上講,后者并不是對象):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貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個(gè)贊
您不是在重新分配“ a”
a.m_name = "Bob";
嘗試這樣做
a = new Person("Bob", 20);
那么您將獲得與您列出的字符串示例相似的行為。
添加回答
舉報(bào)
0/150
提交
取消