首先:public class Person {    public String name;    public String age;    public String address;    public String getAge() {
        return age;
    }    public String getName() {
        return name;
    }    public String getAddress() {
        return address;
    }    public void setAge(String age) {
        this.age = age;
    }    public void setName(String name) {
        this.name = name;
    }    public void setAddress(String address) {
        this.address = address;
    }}
然后:public class Test3 {    public static void main(String[] args) {        Person person = new Person();        person.setName("小胡同志");
        person.setAge("23");
        person.setAddress("中国北京");        Person person2 = new Person();
        person2 = person;        person.setAddress("美国洛杉矶");        System.out.println(person2.getAddress());
    }
}
如果运行一下结果会是: 美国洛杉矶问题:person2 是新new的一个对象,为什么person的属性的改变会影响到person2 ?

解决方案 »

  1.   

    person2 = person;之后,
    这两个东西就同一个地址了,所以会变
      

  2.   

    person2 = person跟person2 = new Person(person)的区别嘛
      

  3.   

    你的做法只有一个对象,两个引用指向同一对象,new 一下的话有两个对象,两个引用分别指向不同对象
      

  4.   

    person2 = person这句话意思是person2和person指向同一个引用..
      

  5.   

    你造了个人a,给他取名为person,你又造了个人b,取名为person2,然后你把b扔掉了,让a也叫person2,这样a有了两个名字,反过来说这两个名字指的都是同一个人a
      

  6.   

    person2 = person;  你改掉了引用了啊
      

  7.   

    再问:综上所述,怎么才能让 person 经过一些变动后,最后输出的是person变动前的属性?也就是说怎么才能用一个临时对象来暂存person最初变动前的属性,然后在person变动后,输出这个临时变量的属性。
      

  8.   

    一个个get出来,set到临时对象里