[JAVA] ๋ฐฐ์—ด

min ๐ŸŽธยท2025๋…„ 1์›” 29์ผ

๐Ÿค” ๋ฐฐ์—ด์ด๋ž€ ?

๋™์ผํ•œ ์ž๋ฃŒํ˜•(Data Type)์˜ ๋ฌถ์Œ์ด๋‹ค.
์—ฐ์†๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์šฉ๋„๋กœ ์‚ฌ์šฉ๋œ๋‹ค.
๋ฐฐ์—ด์€ heap ์˜์—ญ์— new ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด ํ• ๋‹น๋œ๋‹ค.
๋˜ํ•œ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋Š” ์ตœ์ดˆ ์„ ์–ธํ•œ ๊ฐ’์œผ๋กœ โ€œ๊ณ ์ •โ€ ๋˜๋ฉฐ, ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.


๐Ÿ’ก 1์ฐจ์› ๋ฐฐ์—ด

int arr[] = new int[5];

๋ฐฐ์—ด์„ ์„ ์–ธํ•˜๋Š” ๋ฐฉ๋ฒ•

  1. ์ฐธ์กฐ ๋ณ€์ˆ˜๋งŒ ๋จผ์ € ์„ ์–ธ, ํฌ๊ธฐ ๋ฐ ๊ฐ’์„ ๋‚˜์ค‘์— ์ดˆ๊ธฐํ™”
  2. ์ตœ์ดˆ ์„ ์–ธ ์‹œ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ ๋ฐ ๊ฐ’์„ ํ• ๋‹น

๋ฐฐ์—ด์— ์ ‘๊ทผ

์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•ด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.
์ •์ˆ˜๋งŒ ๊ฐ€๋Šฅํ•˜๋ฉฐ, 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๊ฐ€ 5์ผ ์‹œ 0~4๊นŒ์ง€์˜ ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ๋ฐฐ์—ด์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.


๐Ÿ’ก ๋‹ค์ฐจ์› ๋ฐฐ์—ด

int arr[][] = new int[3][4]
(3ํ–‰ 4์—ด์ธ 2์ฐจ์› ๋ฐฐ์—ด)


๐Ÿค” ๋ฐฐ์—ด์˜ ๋ณต์‚ฌ๋ž€ ?

์ž๋ฐ”์—์„œ๋Š” ๋ฐฐ์—ด์€ ๋ชฉ์ ์— ๋”ฐ๋ผ ๋ณต์‚ฌ๋ฅผ ํ•ด์•ผ ํ•  ๊ฒฝ์šฐ๊ฐ€ ์žˆ์œผ๋ฉฐ ์œ ํ˜•์œผ๋กœ๋Š” ์–•์€ ๋ณต์‚ฌ์™€ ๊นŠ์€ ๋ณต์‚ฌ๊ฐ€ ์žˆ๋‹ค.

  1. ์–•์€ ๋ณต์‚ฌ(shallow copy) : stack ์˜ ์ฃผ์†Œ๊ฐ’๋งŒ ๋ณต์‚ฌ, ์›๋ณธ์„ ๊ณต์œ  ํ•  ๋ชฉ์ 
  2. ๊นŠ์€ ๋ณต์‚ฌ(deep copy) : heap์˜ ๋ฐฐ์—ด์— ์ €์žฅ๋œ ๊ฐ’์„ ๋ณต์‚ฌ, ์›๋ณธ๊ณผ ์‚ฌ๋ณธ์„ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ด€๋ฆฌ ํ•  ๋ชฉ์ 

1. ์–•์€ ๋ณต์‚ฌ

์–•์€ ๋ณต์‚ฌ๋Š”

stack์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋ฐฐ์—ด์˜ ์ฃผ์†Œ๊ฐ’๋งŒ ๋ณต์‚ฌ

๋™์ผํ•œ ๋ฐฐ์—ด์˜ ์ฃผ์†Œ๊ฐ’

์–•์€ ๋ณต์‚ฌ๋Š” ๋ ˆํผ๋Ÿฐ์Šค ๋ณ€์ˆ˜ ์•ˆ์— ๋‹ด๊ธด ์ฃผ์†Ÿ๊ฐ’์„ ์ƒˆ๋กœ์šด ๋ ˆํผ๋Ÿฐ์Šค ๋ณ€์ˆ˜์— ๋ณต์‚ฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.


2. ๊นŠ์€ ๋ณต์‚ฌ

๊นŠ์€ ๋ณต์‚ฌ๋Š”

heap์— ์ƒ์„ฑ๋œ ๋ฐฐ์—ด์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ’์„ ๋˜ ๋‹ค๋ฅธ ๋ฐฐ์—ด์— ๋ณต์‚ฌ

๋‹ค๋ฅธ ๋ฐฐ์—ด์—๋Š” ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค

๊นŠ์€ ๋ณต์‚ฌ๋Š” ์–•์€ ๋ณต์‚ฌ์™€ ๋‹ฌ๋ฆฌ ์ƒˆ๋กญ๊ฒŒ ํ• ๋‹นํ•œ ํž™ ์˜์—ญ์— ๊ธฐ์กด ๋ฐฐ์—ด์˜ ๊ฐ’์„ ๋ณต์‚ฌํ•œ ํ›„ ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑ๋œ ๋ฐฐ์—ด์˜ ์ฃผ์†Ÿ๊ฐ’์„ ๋„˜๊ฒจ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€