Java 之不小心修改对象值


Java 创建对象是一个映射的过程,类似于C中的指针,在堆中new 一块空间,再将变量名对应至那个空间。
String a = new String("空间");
String b = a;
a和b指向同一块区域String (“空间”)。
String是不能修改静态域final,一旦初始化就不能修改。
String还好,但这个在类中要特别注意。
一定一定不要写返回引用可变对象的访问器方法。
class Employee
{
private Date hireDay;
...
public Date getHireDay()
{
//return hireDay;//错误
return (Date) hireDay.clone();//正确,返回一个复制的新对象
}
}

Date date = employee.getHireDay();//employee 是Employee的一个实例

修改date也能同时修改employee中的hireDay,因为他们引用同一个Date对象。

再如下面例子:
public static void tripleSalary(Employee x){
x.raiseSalary(200);
}
调用
harry = new Employ(...);
tripleSalary(harry);

 

原文地址:https://www.cnblogs.com/auspice/p/11332049.html