2024-08-09 02:17:27
๋ฐ˜์‘ํ˜•

์˜ค๋Š˜์€ ๋ฐฐ์—ด์— ๋Œ€ํ•ด์„œ ๋ฐฐ์›Œ๋ณด์ž

 

๋ฐฐ์—ด์ด๋ž€?

๊ฐ™์€ ์ž๋ฃŒํ˜•์˜ ๊ฐ’๋“ค์„ ๋‚˜์—ดํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ์•„๋Š” C์–ธ์–ด๊ฐ™์€ ์–ธ์–ด์—๋„ ๋ฐฐ์—ด์ด ์กด์žฌํ•œ๋‹ค.

 

์šฐ๋ฆฌ๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” ๊ทธ๋Ÿฌํ•œ ๋ฐฐ์—ด์ด ์ž๋ฐ”์—๋„ ์กด์žฌํ•œ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ด์ œ๋ถ€ํ„ฐ ์ž๋ฐ”์˜ ๋ฐฐ์—ด์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž!!

 

๋ฐฐ์—ด์€ ์ €์žฅ๊ณต๊ฐ„์˜ ๋‚˜์—ด์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด ๋ฐฐ์—ด์€ ์™œ ์‚ฌ์šฉํ•˜๋Š”๊ฑธ๊นŒ?

       1. ๊ทœ์น™์ด ์—†๋Š” ๊ฐ’์— ๊ทœ์น™์„ฑ์„ ๋ถ€์—ฌํ•˜๊ธฐ ์œ„ํ•ด์„œ

       2. ์ €์žฅ๊ณต๊ฐ„ ์—ฌ๋Ÿฌ๊ฐœ๋ฅผ ์ด๋ฆ„ ํ•œ๊ฐœ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ ๋กœ ์šฐ๋ฆฌ๋Š” ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•œ๋‹ค

 

๊ทธ๋ ‡๋‹ค๋ฉด ๋ฐฐ์—ด์„ ์„ ์–ธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋จผ์ € ์•Œ์•„๋ณด์ž

๋ฐฐ์—ด์˜ ์„ ์–ธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ด๋ฃจ์–ด์ง„๋‹ค

 

์ž๋ฃŒํ˜•[ ] ๋ฐฐ์—ด๋ช…;

ex) int [ ] arr  -> int ํƒ€์ž…์˜ ๋ณ€์ˆ˜ arr ์„ ์–ธ

 

๊ทธ๋ ‡๋‹ค๋ฉด ๋ฐฐ์—ด์˜ ์ƒ์„ฑ์€ ์–ด๋–ป๊ฒŒ ์ด๋ฃจ์–ด์งˆ๊นŒ?

new ์ž๋ฃŒํ˜•[๋ฐฐ์—ด์˜ ํฌ๊ธฐ]; ์™€ ๊ฐ™์ด ์ด๋ฃจ์–ด์ง„๋‹ค.

์ฆ‰,  ๋ฐฐ์—ด์˜ ์„ ์–ธ๊ณผ ๋ฐฐ์—ด์˜ ์ƒ์„ฑ์„ ํ•ฉ์น˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์•„์ง„๋‹ค

 

ex) int [ ] arr = new int[5];

---> int ๋ฐฐ์—ด ํƒ€์ž… ๋ณ€์ˆ˜ arr์— intํƒ€์ž…์˜ ์ €์žฅ๊ณต๊ฐ„ 5๊ฐœ๊ฐ€ ๋‚˜์—ด๋œ ๋ฐฐ์—ด์˜ "์ฃผ์†Œ๊ฐ’"์„ ์ €์žฅํ•œ๋‹ค.

๋ฐ”๋กœ ์ด ๋ถ€๋ถ„์ด ์ค‘์š”ํ•œ๋ฐ, ์ฃผ์†Œ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค๋Š” ์ ์ด point๋‹ค.

 

๊ทธ๋Ÿผ ๋งŒ์•ฝ ์šฐ๋ฆฌ๊ฐ€ ์ด๋ ‡๊ฒŒ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๊ณ  

System.out.println(arr); ์„ ํ•˜๋ฉด ๋ฌด์Šจ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ฌ๊นŒ??

๋ฐ”๋กœ ์ฃผ์†Œ๊ฐ’์ด ๋‚˜์˜จ๋‹ค. ์–ด๋– ํ•œ ๊ฒฐ๊ณผ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฐฐ์—ด์˜ ์ฒซ๋ฒˆ์งธ ์ž๋ฆฌ์˜ ์ฃผ์†Œ๊ฐ’์ด ๋‚˜์˜ค๋Š” ๊ฒƒ์ด๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด ์™œ ์ด๋Ÿฌํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ฌ๊นŒ??

 

๋ฐฐ์—ด์˜ ๊ตฌ์กฐ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ฐ„๋‹จํ•œ ์ด์•ผ๊ธฐ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ‘œ๋ฅผ ๋ณด์ž.

 

//๋ฐฐ์—ด์˜ ๊ตฌ์กฐ

ex) int[] arr = new int[3];

stack ์˜์—ญ                              heap ์˜์—ญ

   arr                                 adress1   adress2   adress3
[    adress1 ]----------------- [             ][             ][              ]
                                               0              1                2           ==> ์ธ๋ฑ์Šค(index)

 

์šฐ๋ฆฌ๋Š” stack ์˜์—ญ์—์„œ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ณ  ๊ทธ ๋ณ€์ˆ˜์— heap์˜์—ญ์˜ ์ฃผ์†Œ๊ฐ’์„ ํ• ๋‹นํ•œ๋‹ค.

arr์ด๋ผ๋Š” ๊ฒƒ์ด heap์˜์—ญ์— ์žˆ๋Š” adress1,adress2,adress3์˜ ๋‚˜์—ด์ค‘ ๊ฐ€์žฅ ์•ž์—์žˆ๋Š”

adress1์˜ ์ฃผ์†Œ๊ฐ’์„ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ’์„ ๊ตฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์šฐ๋ฆฌ๋Š” ์ธ๋ฑ์Šค๊ฐ’์„ ํ‘œ๊ธฐํ•ด์•ผํ•œ๋‹ค.

* ์ ‘๊ทผ ๋ฐฉ๋ฒ• : arr[0], arr[1], arr[2]

 

1. stack ์˜์—ญ : ์ €์žฅ๊ณต๊ฐ„์— ์ด๋ฆ„์„ ๋ถ™์ด๊ณ , ์ด๋ฆ„์œผ๋กœ ์ €์žฅ๊ณต๊ฐ„์„ ์ฐพ์•„๊ฐ„๋‹ค
   heap ์˜์—ญ : ์ €์žฅ๊ณต๊ฐ„์— ์ด๋ฆ„์„ ๋ถ™์ด์ง€ ์•Š๊ณ , ์ฃผ์†Œ๊ฐ’(์ฐธ์กฐ๊ฐ’)์„ ํ†ตํ•ด ์ €์žฅ๊ณต๊ฐ„์„ ์ฐพ์•„๊ฐ„๋‹ค

2. stack ์˜์—ญ์— int[] ์ž๋ฃŒํ˜•์˜ ๋ณ€์ˆ˜ arr์ด ํ• ๋‹น๋œ๋‹ค(์ƒ์„ฑ๋œ๋‹ค)

3. new ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด heap ์˜์—ญ์— int ํƒ€์ž… ์ €์žฅ๊ณต๊ฐ„ 3๊ฐœ๊ฐ€ ๋‚˜์—ด๋˜์–ด ํ• ๋‹น๋œ๋‹ค(์ƒ์„ฑ๋œ๋‹ค)

4. ๋ณ€์ˆ˜ arr์— heap์˜์—ญ์— ํ• ๋‹น๋œ ์ €์žฅ๊ณต๊ฐ„ ์ค‘ 0๋ฒˆ์งธ (์ œ์ผ ์•ž์˜ ์ €์žฅ๊ณต๊ฐ„)์˜ ์ฃผ์†Œ๊ฐ’์ด ์ €์žฅ๋œ๋‹ค

5. ๋ณ€์ˆ˜ arr์—๋Š” ๋‚˜์—ด๋œ ์ €์žฅ๊ณต๊ฐ„ ์ค‘ ์ œ์ผ ์•ž์˜ ์ €์žฅ๊ณต๊ฐ„(0๋ฒˆ์งธ)์˜ ์ฃผ์†Œ๊ฐ’์ด ์ €์žฅ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ 
arr ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด []์•ˆ์— ์ ‘๊ทผํ•˜๊ณ  ์‹ถ์€ ์ €์žฅ๊ณต๊ฐ„์˜ ์ˆœ์„œ ๋ฒˆํ˜ธ๋ฅผ ๋ช…์‹œํ•˜์—ฌ ํŠน์ • ์ €์žฅ๊ณต๊ฐ„์„ ์ ‘๊ทผํ•œ๋‹ค

6. ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ €์žฅ๊ณต๊ฐ„์— ๋ถ€์—ฌ๋œ ์ˆœ์„œ๋ฒˆํ˜ธ -> ์ธ๋ฑ์Šค(inedex) -> 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ 1์”ฉ ์ฆ๊ฐ€

* ์ผ๋ฐ˜ ๋ณ€์ˆ˜ : ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ๊ฐ€์ง€๋Š” ์ž๋ฃŒํ˜•(๊ธฐ๋ณธ์ž๋ฃŒํ˜•)์˜ ๋ณ€์ˆ˜
* ์ฐธ์กฐ ๋ณ€์ˆ˜ : ๋ฐ์ดํ„ฐ๊ฐ€ ์œ„์น˜ํ•œ ์ฃผ์†Œ๊ฐ’์„ ๊ฐ€์ง€๋Š” ์ž๋ฃŒํ˜•(์ฐธ์กฐ์ž๋ฃŒํ˜•)์˜ ๋ณ€์ˆ˜
-> String(๋ฌธ์ž์—ด), ๋ฐฐ์—ด, ํด๋ž˜์Šค ๋“ฑ...

 

๊ทธ๋Ÿฌ๋ฉด ์ด ์ผ๋ จ์˜ ๊ณผ์ •๋“ค์„ ์ฝ”๋“œ๋กœ ์ง์ ‘ ์ณ๋ณด๋ฉฐ ์ดํ•ดํ•ด๋ณด์ž.

 

๋ฐฐ์—ด์˜ ์˜ˆ์ œ1

 

int [ ] arr; ์„ ์„ ์–ธํ•˜๊ณ 

arr = new int[3]; ์œผ๋กœ ํฌ๊ธฐ 3์˜ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์—ˆ๋‹ค.

์ด ์ƒํ™ฉ์—์„œ arr์„ ์ถœ๋ ฅํ•˜๋ฉด ์ฃผ์†Œ๊ฐ’์ด ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.

 

๋ฐฐ์—ด์˜ ์˜ˆ์ œ2

๋‹ค์Œ๊ณผ ๊ฐ™์ด int [ ] arr4์— ๊ฐ’ 100๊ณผ 200์„ ๋ฐ”๋กœ ํ• ๋‹นํ•˜๊ณ ,

arr4๋งŒ ์ถœ๋ ฅํ•˜๋ฉด ์—ญ์‹œ๋‚˜ 100์˜ ๊ฐ’์ด ์žˆ๋Š” ์ž๋ฆฌ์˜ ์ฃผ์†Œ๊ฐ’์ด ๋‚˜์˜ค๊ฒŒ ๋˜๊ณ ,

arr[0]์œผ๋กœ์จ ๊ฐ’์— ์ ‘๊ทผํ•˜๊ฒŒ ๋˜๋ฉด ์ฒซ๋ฒˆ์งธ ์ˆซ์ž์ธ 100์ด ์ถœ๋ ฅ๋˜๊ฒŒ ๋œ๋‹ค

 

๋˜ํ•œ ๋ฐฐ์—ด์— null๊ฐ’์„ ํ• ๋‹น ํ•  ๊ฒฝ์šฐ null๊ฐ’์ด ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.

 

์ด๊ฒƒ์ด ๋ฐฐ์—ด์˜ ๊ธฐ๋ณธ์ด๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด ์šฐ๋ฆฌ๋Š” for๋ฌธ๊ณผ ๋ฐฐ์—ด์„ ๊ฒฐํ•ฉํ•  ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ???

 

for๋ฌธ๊ณผ ๋ฐฐ์—ด์˜ ๊ฒฐํ•ฉ ์˜ˆ์ œ

๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ๋ณด์ž.

๋ฐฐ์—ด์€ ํ˜„์žฌ ํฌ๊ธฐ๊ฐ€ 4์นธ์ด๋ฉฐ ๊ฐ’์€ 10, 20, 30, 40์ด ์ €์žฅ๋˜์–ด์žˆ๋Š” ์ƒํƒœ์ด๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์šฐ๋ฆฌ๋Š” ๊ฐ๊ฐ์˜ ์ธ๋ฑ์Šค์— ์ ‘๊ทผํ•ด์„œ ๊ฐ’์„ ์ง์ ‘ ๋ฝ‘์•„๋‚ผ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

 

์ด์ œ for๋ฌธ์„ ๋ณด๋ผ.

for(int i =0; i < arr.length; i++) ๋ฅผ ๋ณด๋ฉด ์ฒ˜์Œ ๋ณด๋Š” ๊ฒƒ์ด ์žˆ๋‹ค. ๋ฐ”๋กœ length์ธ๋ฐ, ์ƒ๊ฐํ•ด๋ณด์ž

๋งŒ์•ฝ ์šฐ๋ฆฌ๊ฐ€ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด๋†“๊ณ  ๋‚˜์ค‘์— ๋ฐฐ์—ด์„ ์ˆ˜์ •ํ–ˆ๋‹ค๊ณ  ์น˜์ž. ๊ทธ๋ ‡๋‹ค๋ฉด for๋ฌธ์˜ ์กฐ๊ฑด์‹๋„ ๋ฐ”๊ฟ”์ค˜์•ผํ•˜๊ณ 

์—ฌ๋Ÿฌ๊ฐ€์ง€๋กœ ๊ท€์ฐฎ์€ ์ผ์ด ์ƒ๊ธด๋‹ค. ์ฆ‰, ์œ ์—ฐํ•˜์ง€ ์•Š๋‹ค. ์ด๋Ÿฐ ์ผ์„ ๋Œ€๋น„ํ•ด์„œ ์šฐ๋ฆฐ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ ์ž์ฒด๋ฅผ ์กฐ๊ฑด์‹์— 

๋„ฃ์–ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ ์ฝ”๋“œ๊ฐ€ ๋ฐ”๋กœ .length ์ด๋‹ค. ์œ„์— ์ฝ”๋“œ์—์„œ ์ฆ‰ arr3.length๋Š” 4์ธ ๊ฒƒ์ด๋‹ค.

๋งŒ์•ฝ ํฌ๊ธฐ๊ฐ€ 7๋กœ ๋ฐ”๋€Œ์–ด๋„ arr3.length๋Š” ๊ฐ™์ด 7๋กœ ๋ฐ”๋€Œ๋‹ˆ ๋ฌธ์ œ๊ฐ€ ์—†์„ ๊ฒƒ์ด๋‹ค.

 

์ด๋ ‡๊ฒŒ for๋ฌธ๊ณผ ๊ฒฐํ•ฉํ•œ ๋ฐฐ์—ด์˜ ํŠน์„ฑ์„ ์•Œ์•„๋ณด์•˜๋‹ค.

๊ธฐ๋ณธ์ ์ธ ๊ฒƒ์ด๊ธฐ๋Š” ํ•˜๋‚˜ ๊ฐ„๊ณผํ•˜๊ธฐ ์‰ฌ์šด ๋‚ด์šฉ์ผ ์ˆ˜ ์žˆ๋Š” ๋‚ด์šฉ์ด๋ฏ€๋กœ ๊ณต๋ถ€ํ•˜๋Š” ๊ฒƒ์€ ์œ ์˜๋ฏธํ•˜๋‹ค.

 

๋ฐฐ์—ด์€ ์ค‘์š”ํ•œ ๋‚ด์šฉ ์ค‘ ํ•˜๋‚˜์ด๋‹ˆ ์ •ํ™•ํžˆ ๊ณต๋ถ€ํ•˜๊ณ  ๋„˜์–ด๊ฐ€๋„๋ก ํ•˜์ž!

728x90