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)); }
运行结果如下:
时间: 2024-10-06 00:04:04