Java对象的假克隆
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java对象的假克隆相关的知识,希望对你有一定的参考价值。
public class Employee{ private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Employee(String name, int age) { this.name = name; this.age = age; } public Employee() { } @Override public String toString() { return "Employee [name=" + name + ", age=" + age + "]"; } }
/**
* 在Java中对于基本类型可以使用"="来进行克隆,此时两个变量除了相等是没有任何关系的
* 而对于引用类型却不能简单地使用"="进行克隆,这与Java的内存空间有关。
* 在Java中将内存空间分成两块,即堆和栈.
* 在栈中保存基本类型和引用变量
* 在堆中保存对象
* 对于引用变量而言,使用"="将修改引用,而不是复制堆中的对象,此时两个引用变量将
* 指向同一个对象
* 因此一个变量对其进行修改则会改变另一个变量
*/
public static void main(String[] args) { System.out.println("克隆之前:"); Employee emp1 = new Employee(); emp1.setName("张XX"); emp1.setAge(30); System.out.println("员工1的信息:"+emp1); System.out.println("克隆之后"); Employee emp2 = emp1; emp1.setName("李XX"); emp1.setAge(24); System.out.println("员工1的信息:"+emp1); System.out.println("员工2的信息:"+emp2); System.out.println("是否为同一个对象:"+(emp1==emp2)); }
运行结果如下:
本文出自 “IT菜鸟” 博客,请务必保留此出处http://mazongfei.blog.51cto.com/3174958/1907842
以上是关于Java对象的假克隆的主要内容,如果未能解决你的问题,请参考以下文章