【发布时间】:2015-03-08 13:19:50
【问题描述】:
package com.test;
public class Person {
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
package com.test;
public class Test {
public static void main(String[] args) {
Person person1 = new Person();
person1.setAge(10);
Person person2 = new Person();
person2.setAge(person1.getAge());
person1.setAge(30);
System.out.println(person2.getAge());
}
}
我认为这将打印 30,因为 int 是原始且可变的。
谁能解释一下为什么?
我不是不小心在这里打印了 person2。我需要了解其背后的真正概念。
现在我正在检查与包装器相同的内容。但结果是一样的。
package com.test;
public class Person {
private Integer age;
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
甚至尝试使用可变的 Date 类:
package com.test;
import java.util.Date;
public class Person {
private Date date;
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}
package com.test;
import java.util.Date;
public class Test {
@SuppressWarnings("deprecation")
public static void main(String[] args) {
Person person1 = new Person();
person1.setDate(new Date(2015, 3, 8));
Person person2 = new Person();
person2.setDate(person1.getDate());
System.out.println("Person2 date before modifying " + person2.getDate());
person1.setDate(new Date(2015, 3, 9));
System.out.println("Person2 date after modifying " + person2.getDate());
}
}
这打印:
修改前的 Person2 日期 Thu Apr 08 00:00:00 IST 3915
Person2 修改后的日期 Thu Apr 08 00:00:00 IST 3915
【问题讨论】:
-
可能想谷歌 java 通过引用传递与通过值传递。
标签: java