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));
}
运行结果如下: