Java 之不小心修改对象值

Posted auspice

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);

 技术图片

 

以上是关于Java 之不小心修改对象值的主要内容,如果未能解决你的问题,请参考以下文章

并发编程-线程安全策略之不可变对象

Java多线程编程之不可变对象模式

多线程编程-设计模式之不可变对象模式

java反射反射实现判断发生了修改操作,判断两个对象是否发生属性值的变更,判断两个List集合内对象的属性值是否发生变更

在java中,引用数据不就是一种对象么?为啥在调用函数中不能进行修改数值??

java对象值的copy