Copy

Shallow Copy vs Deep Copy

얕은 볡사 Shallow Copy

  • μ£Όμ†Œλ₯Ό λ³΅μ‚¬ν•©λ‹ˆλ‹€.

  • ν•œμͺ½μ˜ μˆ˜μ •μ΄ 이루어지면 λ‹€λ₯Έ ν•œ μͺ½μ—λ„ 영ν–₯이 κ°‘λ‹ˆλ‹€.

κΉŠμ€ 볡사 Deep Copy

  • μƒˆλ‘œμš΄ 객체λ₯Ό 생성 ν•©λ‹ˆλ‹€.

  • μ„œλ‘œ κ°„ 영ν–₯이 μ—†μŠ΅λ‹ˆλ‹€.

Java μ—μ„œ μ‚¬μš©λ˜λŠ” Copy λ©”μ†Œλ“œμ˜ 비ꡐ

Method
Primitive Type Copy
Non-Primitive Type Copy
Speed

System.arraycopy()

Deep

Shallow

Fastest

Object.clone()

Deep

Shallow

Fast

Arrays.copyOf()

Deep

Shallow

Fast

Using for

Depend on code

Depend on code

Slow

  • Primitive Type 은 κ°’ κ·Έ 자체이기 λ•Œλ¬Έμ— Deep Copy λ₯Ό μ§€μ›ν•©λ‹ˆλ‹€.

  • Non-Primitive Type 은 μ£Όμ†Œλ₯Ό λ³΅μ‚¬ν•˜λ©° Swallow Copy λ₯Ό μ§€μ›ν•©λ‹ˆλ‹€.

clone()

clone() 은 shallow copy λ₯Ό μ§€μ›ν•©λ‹ˆλ‹€. deep copy λ₯Ό μœ„ν•΄μ„œλŠ” Cloneable λ₯Ό κ΅¬ν˜„ν•˜κ±°λ‚˜ ν•΄μ£Όκ±°λ‚˜ new λ₯Ό 톡해 deep copy λ₯Ό ν•΄μ£Όμ–΄μ•Ό ν•©λ‹ˆλ‹€.

μƒ˜ν”Œ μ½”λ“œ

  • Cloneable λ₯Ό implements ν•˜μ§€ μ•Šμ€ μ‚¬μš©μž μ •μ˜ 클래슀

    • clone : shallow copy

    • forCopy : deep copy

origin
clone
forCopy

img

img

Last updated

Was this helpful?