"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 딥 카피 vs. 얕은 사본 대 Java의 복제 : 차이점은 무엇이며 언제 각각을 사용해야합니까?

딥 카피 vs. 얕은 사본 대 Java의 복제 : 차이점은 무엇이며 언제 각각을 사용해야합니까?

2025-02-06에 게시되었습니다
검색:154

 Deep Copy vs. Shallow Copy vs. Clone in Java: What\'s the Difference and When Should I Use Each?

값 복사 대 객체 복사

복사 값을 구별하는 것이 필수적입니다. ] 및 객체 복사

:

값 복사 :

참조 유형의 값 복사 객체 참조를 할당하는 것과 관련이 있습니다. &&&]
  • 객체 복사 : 자체 정체성이있는 새 개체를 만드는 것은 명시 적으로 또는 암시 적으로 "새로운"을 사용하는 것과 관련이 있습니다. 객체의 딥 카피
  • 얕은 사본 :
새 개체는 원본과 동일한 값으로 생성되지만 임베디드 개체에 대한 참조는 공유됩니다.

&&) 다음 예를 고려하십시오 :

  • class 예제 { int foo; int [] 막대; ... } 예 EG1 = 새 예제 (1, new int [] {1, 2}); 예 EG2 = ... eG1의 얕은 사본은 다음과 같습니다. EG1의 딥 카피는 다음과 같습니다.
  • 얕고 깊은 사본과 달리 클론은 모든 Java 클래스 및 어레이에서 사용할 수있는 방법입니다. 그러나
  • 클론의 사양이 얕은 또는 깊은 사본을 생성하는지 여부를 정의하지는 않습니다.
클론의 의미는 다른 클래스마다 크게 다를 수 있습니다.

class Example {
  int foo;
  int[] bar;
  ...
}

Example eg1 = new Example(1, new int[]{1, 2});
Example eg2 = ...

결론
Example eg2 = new Example(eg1.foo, eg1.bar);
이 용어는 자바에서 자주 사용되지만 해당 정의는 크게 다를 수 있습니다. 얕은 사본, 딥 카피 및 클론의 뉘앙스를 이해하는 것은 정확한 객체 복제에 중요합니다. 클론의 한계를 명심하고주의해서 접근하는 것이 중요합니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3