๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
JAVA/๊ธฐ๋ณธ ์ด๋ก 

6. ๋ฐฐ์—ด (Array)

by ๐Ÿณ Laboon 2024. 2. 10.

๋ธ”๋กœ๊ทธ ๊ธ€์„ ์—ด์‹ฌํžˆ ์จ๋ณด๋ ค๊ณ  ํ–ˆ์ง€๋งŒ, ์ตœ๊ทผ์— ์ƒ๊ฐ์„ ์ •๋ฆฌํ•˜๋Š” ์‹œ๊ฐ„์„ ๋งŽ์ด ๊ฐ–๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ ๋ธ”๋กœ๊ทธ ๊ธ€์„ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์˜ณ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๊ณ . ๊ธ€์„ ์ฃผ๋กœ ์“ฐ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค๋งŒ, ์ œ ์ƒ๊ฐ์„ ์ •๋ฆฌํ•˜๊ณ  ๊ธฐ๋ณธ์„ ๋‹ค์‹œ ์ฑ„์šฐ๋Š” ๋А๋‚Œ์˜ ๋ธ”๋กœ๊ทธ๋ผ์„œ ๊ณต๋ถ€์˜ ์ง€์นจ์„œ๊ฐ€ ๋  ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ช‡ ๋ฒˆ์”ฉ, ๋ฐฉ๋ฌธํ•˜๋ฉด์„œ ์ œ ๊ธ€์„ ์ฝ์–ด์ฃผ์‹œ๋Š” ๋ถ„๋“ค๊ป˜ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

 

๋ฐฐ์—ด์ด๋ž€ ๋ฌด์—‡์ผ๊นŒ?

๋ฐฐ์—ด์€ ์ž๋ฃŒ๊ตฌ์กฐ ๊ด€์ ์—์„œ ๋ณด๋ฉด ์ƒ๋‹นํ•œ๋ฐ์š”.

ํ˜„์žฌ ๊ธ€์˜ ์นดํ…Œ๊ณ ๋ฆฌ๋Š” Java์˜ ๊ธฐ๋ณธ์ด๋ก ์ด๋ฏ€๋กœ ๋‹จ์ˆœํ•˜๊ฒŒ๋งŒ ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

 

ํ˜„์‹ค๊ณผ ๋น—๋Œ€์–ด ์ƒ๊ฐํ•ด๋ณด์ž.

 

์ˆซ์ž๊ฐ€ `1, 2, 3, 4`์˜ ํ˜•ํƒœ๋ฅผ ๋ ๊ณ  ์žˆ์œผ๋ฉด ์šฐ๋ฆฌ๋Š” '์ˆ˜๊ฐ€ ๋‚˜์—ด๋˜์–ด ์žˆ๋‹ค.' ๋ผ๊ณ  ํ•˜์ฃ ?

๊ธ€์ž๊ฐ€ `ใ…ˆ, ใ…ฃ, ใ„ฑ, ใ…, ใ…‚`์˜ ํ˜•ํƒœ๋ฅผ ๋ ๊ณ  ์žˆ์„ ๋•Œ, ์˜ฌ๋ฐ”๋ฅธ ๊ธ€์ž๋กœ '๋ฐฐ์—ด'ํ•ด ๋ณด์„ธ์š”. ๋ผ๊ณ ๋„ ํ•˜์ฃ ?

์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋ฐฐ์—ด ํ•œ๋‹ค๋ฉด, '์ง€๊ฐ‘'์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ง€๊ฐ‘์—๋Š” 10์›, 100์›, 1000์›, 10000์› ๋“ฑ ๋งŽ์€ ํ™”ํ๋‚˜ ๋ˆ์ด ๋“ค์–ด๊ฐ€์ฃ ?

ํ•˜์ง€๋งŒ ํ™”ํ์˜ ๋ฒ”์œ„๋Š” ์ˆ˜ํ‘œ๊ฐ€ ์•„๋‹Œ ์ด์ƒ '5๋งŒ์›'์œผ๋กœ ํ•œ์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ง€๊ฐ‘์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ ์ง€๊ฐ‘์— ์ฑ„์šธ ์ˆ˜ ์žˆ๋Š” ๋ˆ๋„ ํ•œ์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

์‹ค์ œ ์ปดํ“จํ„ฐ๋ฅผ ํ˜„์‹ค๊ณผ ๋น„๊ตํ•˜์—ฌ ์ƒ๊ฐํ•ด๋ณด์ž.

 

๋ฐฐ์—ด์„ ์ง€๊ฐ‘์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค๋ฉด, ํ™”ํ์˜ ๋ฒ”์œ„๊ฐ€ '์ž๋ฃŒํ˜•์˜ ํฌ๊ธฐ'๊ฐ€ ๋˜๊ณ  ์ง€๊ฐ‘์˜ ํฌ๊ธฐ๊ฐ€ '๋ฐฐ์—ด์˜ ํฌ๊ธฐ'๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ, ํ•œ๊ตญ์ด ์•„๋‹ˆ๊ณ  ๋ฏธ๊ตญ์ด์—ˆ๋‹ค๊ณ  ํ•ด๋ด…์‹œ๋‹ค. ํ™”ํ์˜ ๋ฒ”์œ„๋Š” ์ตœ๋Œ€ 100$๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

์•ž์„œ, ์ž๋ฃŒํ˜•์—์„œ ์„ค๋ช…ํ–ˆ๋“ฏ์ด ์ปดํ“จํ„ฐ๋„ ๋˜‘๊ฐ™์ด ์–ด๋–ค ์ž๋ฃŒํ˜•์ด๋ƒ์— ๋”ฐ๋ผ์„œ ํ™”ํ๊ฐ€ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

์ถ”๊ฐ€์ ์œผ๋กœ ์ง€๊ฐ‘์˜ ํฌ๊ธฐ๊ฐ€ ํ•œ์ •๋˜์–ด ์žˆ๋“ฏ, ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋„ ์„ค์ •ํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Java์—์„œ ๋ฐฐ์—ด์„ '์„ ์–ธ'ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ `์ž๋ฃŒํ˜•[] ๋ฐฐ์—ด๋ช…(๋ณ€์ˆ˜๋ช…) = new ์ž๋ฃŒํ˜•[ํฌ๊ธฐ];` ์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ๋Œ€๊ด„ํ˜ธ '[]'๊ฐ€ ์ง€๊ฐ‘์˜ ํฌ๊ธฐ๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

// 5๊ฐœ์˜ ์ˆซ์ž๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ๋ฐฐ์—ด
int[] arr = new int[5];
// 5๊ฐœ์˜ ๋ฌธ์ž์—ด์„ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ๋ฐฐ์—ด
String[] brr = new String[5];

์—ฌ๊ธฐ์„œ new ์—ฐ์‚ฐ์ž๋ผ๊ณ  ํ•˜๋Š” ๊ฒƒ์ด ์‚ฌ์šฉ์ด๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์กฐ๊ธˆ CS์ง€์‹์„ ํ•„์š”๋กœ ํ•˜๋Š”๋ฐ์š”.

์šฐ๋ฆฌ๋Š” ์ž๋ฐ”์—์„œ ์ผ๋ฐ˜์ ์œผ๋กœ Stack ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. - ์ปดํ“จํ„ฐ ๊ตฌ์กฐ ๋ฐ ์šด์˜์ฒด์ œ ์ง€์‹์ด ํ•„์š”

ํ•˜์ง€๋งŒ String์ด๋ผ๋Š” UserDefineDataType์€ ์ด์ „ ์ฑ•ํ„ฐ UDDT์—์„œ ์„ค๋ช…ํ–ˆ์ง€๋งŒ PDT ๋ฐ UDDT์˜ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค.

๋ฐฐ์—ด ๋˜ํ•œ Reference Data Type์œผ๋กœ ํ•˜๋‚˜์˜ UDDT ์ž…๋‹ˆ๋‹ค. ๋ฐฐ์—ด์€ ์—ฐ์†๋œ ๊ณต๊ฐ„์— ์ˆœ์ฐจ์ ์œผ๋กœ ์ž๋ฃŒํ˜• ํฌ๊ธฐ๋ฅผ ๊ฐ–๊ฒŒ๋˜๋Š”๋ฐ ํ˜„์žฌ ์ฝ”๋“œ๋ฅผ ์ฝ์€ ์‹œ์ ์— ์ด ํฌ๊ธฐ๋งŒํผ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ heap ๋ฉ”๋ชจ๋ฆฌ๋ผ๋Š” ๊ฒƒ์„ ์‚ฌ์šฉํ•ด์„œ '๋™์ '์œผ๋กœ ํ˜„์žฌ ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ๋งŒํผ ์ ์ ˆํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด new ์—ฐ์‚ฐ์ž์ž…๋‹ˆ๋‹ค.

ํ•ด๋‹น ๋‚ด์šฉ์„ ์Šคํ…๋ณ„๋กœ ์ง„ํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ๋ถˆํŽธํ•  ์ˆ˜ ์žˆ์–ด์„œ new๋Š” ์ข€ ๋” ๋’ค์— ๋‹ค๋ฃจ๋Š”๊ฒŒ ๋งž๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

์ง€๊ฐ‘์—์„œ ์ฒœ ์›์„ ๊บผ๋‚ด๊ณ  ์‹ถ์€๋ฐ ์–ด๋–ป๊ฒŒ ๊บผ๋‚ด์ง€??

 

์šฐ๋ฆฌ๋Š” ์‹œ๊ฐ์„ ํ†ตํ•ด ์ง€๊ฐ‘์—์„œ ์ฒœ ์›์˜ ์œ„์น˜๋ฅผ ๋ฐ”๋กœ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด์„œ (5000์›, 1000์›, 10000์›, 1000์›) ์ด๋ ‡๊ฒŒ ์žˆ์„ ๊ฒฝ์šฐ,

5์ฒœ ์›๊ณผ ๋งŒ ์› ์‚ฌ์ด์˜ ์ฒœ ์›์„ ๊บผ๋‚ด๋˜๊ฐ€ ๋งŒ ์› ์˜†์— ์žˆ๋Š” ์ฒœ ์›์„ ๊บผ๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋•Œ, ์ฒœ ์›์€ ๋‘ ๋ฒˆ์งธ, ๋„ค ๋ฒˆ์งธ์— ์กด์žฌํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด์ฃ . ์ด๊ฒƒ์„ ๋ฐฐ์—ด์—์„œ๋Š” ;index'๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

๋ฐฐ์—ด๋„ ๋งˆ์ฐฌ๊ฐ€์ง€ ์ž…๋‹ˆ๋‹ค. int[] wallet = new int[4] ๋ผ๋Š” ๋ฐฐ์—ด์„ ์„ ์–ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. 

[5000, 1000, 10000, 1000]๋ผ๋Š” ๊ฐ’์ด ์žˆ์„ ๋•Œ ์šฐ๋ฆฌ๋Š” ๋‘ ๋ฒˆ์งธ, ๋„ค ๋ฒˆ์งธ์— 1000์ด๋ผ๋Š” ๊ฐ’์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋ฐฐ์—ด์˜ Index๋Š” 0๋ฒˆ ์งธ ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค๋Š” ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณ€์ˆ˜ํŽธ์—์„œ ์„ค๋ช…ํ•œ ๋‚ด์šฉ ์ค‘, ๋ณ€์ˆ˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ƒ์˜ ์œ„์น˜๋ฅผ ๊ฐ€๋ฅดํ‚ค๊ณ  ์žˆ๋‹ค๊ณ  ์„ค๋ช…ํ•œ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. wallet์˜ ์œ„์น˜๊ฐ€ 1000๋ฒˆ์„ ๊ฐ€๋ฅดํ‚ค๊ณ  ์žˆ๋‹ค๋ฉด, intํ˜•์€ 4byte์ด๋ฏ€๋กœ, wallet์ด๋ผ๋Š” ๋ฐฐ์—ด์˜ ๊ฐ index๋Š” 1000, 1004, 1008, 1012 ์„ ๊ฐ€๋ฅดํ‚ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ƒ๋Œ€์ ์œผ๋กœ ๋ณด๋ฉด 1000๋ฒˆ์˜ ์œ„์น˜์—์„œ 0๋ฒˆ ์งธ, 1๋ฒˆ ์งธ, 2๋ฒˆ ์งธ, 3๋ฒˆ ์งธ์— ์œ„์น˜ํ•ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ด์ฃ .

 

์šฐ๋ฆฌ๋Š” ์ด์ œ ํ•ด๋‹น Index๋ฅผ ๊ฐ€๋ฅดํ‚ค๋Š” ๊ฒƒ์„ '์ ‘๊ทผ(Access)'๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

// ๋ฐฐ์—ด์˜ ์„ ์–ธ
int[] arr = new int[4];
// ๋ฐฐ์—ด์˜ ํ• ๋‹น
int[] brr = {1, 2, 3, 4};
// ์ ‘๊ทผ, ์‹คํ–‰ ๊ฒฐ๊ณผ : 0, 1
System.out.println("arr[0] = " + arr[0] + ", brr[0] = " brr[0]);
// ์ ‘๊ทผ ํ›„ ํ• ๋‹น
arr[0] = 2;
brr[0] = 5;
// ์‹คํ–‰ ๊ฒฐ๊ณผ : 2, 5
System.out.println("arr[0] = " + arr[0] + ", brr[0] = " brr[0]);

 

๋ฐฐ์—ด ์ •๋ฆฌ : https://www.notion.so/24jihwan/e710f65bdd964f848ea282dd10107c20

 

๋ฐฐ์—ด | Notion

๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

24jihwan.notion.site