zoukankan      html  css  js  c++  java
  • 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);

     

  • 相关阅读:
    js高级-闭包
    js作用域
    js执行上下文与执行上下文栈
    js原型及原型链
    去除数组中重复的元素值
    树[省选联考2020]
    GDOI2020 游记
    Problem b[HAOI2011]
    分零食[JSOI2012]
    移动金币「SDOI2019」
  • 原文地址:https://www.cnblogs.com/auspice/p/11332049.html
Copyright © 2011-2022 走看看