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对象的假克隆的主要内容,如果未能解决你的问题,请参考以下文章

Java的对象克隆

java中的浅克隆和深克隆是啥

java中深克隆与浅克隆的区别

Java 对象克隆

Java基础学习 —— 对象的克隆

Java对象的浅克隆