The difference between shallow copy and deep copy: Shallow copy: Create an object that references the same data, and changing the copy will also affect the original object. Deep copy: Create an object that contains a copy of the original object's data. Changing the copy will not affect the original object.

Shallow copy and deep copy in Java
Introduction
In Java , understanding the concepts of shallow copy and deep copy is crucial for object operations. This tutorial details the differences between the two and illustrates them with code examples.
Shallow copy
Code example:
class Person {
private String name;
private Address address;
}
public class ShallowCopyDemo {
public static void main(String[] args) {
Person p1 = new Person();
p1.setName("John Doe");
Address addr = new Address();
addr.setStreet("123 Main St.");
p1.setAddress(addr);
// Shallow copy
Person p2 = p1;
// 更改 p2 的地址
p2.getAddress().setStreet("456 Elm St.");
// p1 的地址也发生了变化
System.out.println(p1.getAddress().getStreet()); // 输出:456 Elm St.
}
}In this example, p2 is a shallow copy of p1, they References the same Address object. Therefore, changes to the address of p2 will also affect p1.
Deep copy
Code example:
Use the clone() method or a third-party library (such as Apache Commons Lang) to implement deep copy.
Using the clone() method:
class Person implements Cloneable {
private String name;
private Address address;
@Override
public Person clone() {
try {
// 使用 super.clone() 创建新对象
return (Person) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return null;
}
}
public class DeepCopyDemo {
public static void main(String[] args) {
Person p1 = new Person();
p1.setName("John Doe");
Address addr = new Address();
addr.setStreet("123 Main St.");
p1.setAddress(addr);
// Deep copy
Person p2 = p1.clone();
// 更改 p2 的地址
p2.getAddress().setStreet("456 Elm St.");
// p1 的地址保持不变
System.out.println(p1.getAddress().getStreet()); // 输出:123 Main St.
}
}In this example, the clone() method is created for p1 A deep copy. Changing the address of p2 will not affect p1 because they refer to different Address objects.
When to use deep copy or shallow copy?
For example, be sure to use deep copies when caching objects or passing them to untrusted code.
The above is the detailed content of What is the difference between shallow copy and deep copy in Java?. For more information, please follow other related articles on the PHP Chinese website!
What does apache mean?
apache startup failed
The difference between ms card and sd card
Ethereum browser query digital currency
Window function usage
Google earth cannot connect to the server solution
How much is one Bitcoin worth in RMB?
How to solve the problem of 400 bad request when the web page displays