Programming/Java

์ž๋ฐ”์˜ ๋ฐฐ์—ด(Array)

UNarD 2025. 4. 22. 17:04

๐Ÿ“ฆ ์ž๋ฐ”์˜ ๋ฐฐ์—ด(Array)

๐ŸงŠ ๋ฐฐ์—ด์ด๋ž€?

๋ฐฐ์—ด(Array)์€
๊ฐ™์€ ์ž๋ฃŒํ˜•์˜ ๊ฐ’ ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์—ฐ์†๋œ ๊ณต๊ฐ„์ด์—์š”.

๐Ÿฅš ๊ณ„๋ž€ํŒ โ†’ ๊ณ ์ •๋œ ์นธ ์ˆ˜, ๊ฐ ์นธ์— 1๊ฐœ์”ฉ!

๋งˆ์น˜ ๊ณ„๋ž€ํŒ์ฒ˜๋Ÿผ ์ •ํ•ด์ง„ ์นธ์— ํ•˜๋‚˜์”ฉ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๊ฐ€ ๋ฐ”๋กœ ๋ฐฐ์—ด์ด์—์š”!
๊ทธ๋ฆฌ๊ณ  ์ค‘์š”ํ•œ ๊ฑด, ์นธ์˜ ๊ฐœ์ˆ˜๋Š” ์ฒ˜์Œ ๋งŒ๋“ค ๋•Œ๋งŒ ์ •ํ•  ์ˆ˜ ์žˆ๊ณ , ๋‚˜์ค‘์—” ๋ฐ”๊ฟ€ ์ˆ˜ ์—†์–ด์š”!


๐Ÿ”ข ๋ฐฐ์—ด์„ ์™œ ์“ฐ๋‚˜์š”?

๐Ÿ™…โ€โ™€๏ธ ๋ฐฐ์—ด ์—†์ด ๋ณ€์ˆ˜๋ฅผ ์“ฐ๋ฉด?

int score1 = 90;
int score2 = 85;
int score3 = 100;

์ ์ˆ˜๊ฐ€ 100๋ช…์ด๋ผ๋ฉดโ€ฆ ๋ณ€์ˆ˜ 100๊ฐœ ์„ ์–ธํ•ด์•ผ ํ• ๊นŒ์š”?! ๐Ÿ˜ฑ

โœ… ๋ฐฐ์—ด์„ ์“ฐ๋ฉด!

int[] scores = new int[100];

ํ•œ ์ค„๋กœ ์ ์ˆ˜ 100๊ฐœ ์ €์žฅ ๊ฐ€๋Šฅ! ๐Ÿ™Œ


โœจ ๋ฐฐ์—ด ์„ ์–ธ๊ณผ ์ƒ์„ฑ

์ž๋ฃŒํ˜•[] ๋ฐฐ์—ด์ด๋ฆ„ = new ์ž๋ฃŒํ˜•[๊ธธ์ด];

๐Ÿ“Œ ์˜ˆ์ œ

int[] numbers = new int[5];  // ์ •์ˆ˜ 5๊ฐœ ์ €์žฅ ๊ฐ€๋Šฅํ•œ ๋ฐฐ์—ด

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ •์ˆ˜ 5๊ฐœ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฐ์—ด์ด ๋งŒ๋“ค์–ด์ ธ์š”!

โœจ ๋ฐฐ์—ด ์„ ์–ธ๊ณผ ์ƒ์„ฑ์€ ๋‚˜๋ˆ ์„œ๋„ ๊ฐ€๋Šฅํ•ด์š”!

int[] numbers;         // ๋ฐฐ์—ด "์„ ์–ธ"๋งŒ ํ•จ (์•„์ง ๋ฉ”๋ชจ๋ฆฌ๋Š” ์—†์Œ)
numbers = new int[5];  // ๋ฐฐ์—ด "์ƒ์„ฑ" (๋ฉ”๋ชจ๋ฆฌ์— ๊ณต๊ฐ„ ํ• ๋‹น)

์ด ๋ฐฉ์‹์€ ๊ฐ์ฒด ์ƒ์„ฑ๊ณผ๋„ ๋น„์Šทํ•ด์š”!


๐Ÿ›  ๋ฐฐ์—ด ์ดˆ๊ธฐํ™” ๋ฐฉ๋ฒ•

1๏ธโƒฃ ๊ฐ’์„ ํ•˜๋‚˜์”ฉ ๋„ฃ๊ธฐ

numbers[0] = 10;
numbers[1] = 20;
numbers[2] = 30;

2๏ธโƒฃ ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ฐ’์„ ๋„ฃ๊ธฐ

int[] numbers = {10, 20, 30, 40, 50};

๐Ÿ“ฅ ๋ฐฐ์—ด์˜ ๊ฐ’ ๊บผ๋‚ด๊ธฐ

System.out.println(numbers[0]); // 10 ์ถœ๋ ฅ

๐Ÿง  ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค(index)๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์š”! numbers[0]์€ ์ฒซ ๋ฒˆ์งธ ๊ฐ’, numbers[1]์€ ๋‘ ๋ฒˆ์งธ ๊ฐ’์ž…๋‹ˆ๋‹ค.

๐Ÿ” ๋ฐฐ์—ด๊ณผ ๋ฐ˜๋ณต๋ฌธ์€ ์ฐฐ๋–ก๊ถํ•ฉ

for๋ฌธ์„ ์‚ฌ์šฉํ•ด ๋ฐฐ์—ด ์ „์ฒด ์ถœ๋ ฅํ•˜๊ธฐ
for (int i = 0; i < numbers.length; i++) {
    System.out.println("๊ฐ’: " + numbers[i]);
}
ํ–ฅ์ƒ๋œ for๋ฌธ (Enhanced for)
for (int n : numbers) {
    System.out.println("๊ฐ’: " + n);
}

โš ๏ธ ๋ฐฐ์—ด ์‚ฌ์šฉ ์‹œ ์ฃผ์˜ํ•  ์ 

์ฃผ์˜ํ•  ์  ์„ค๋ช…
์ธ๋ฑ์Šค ๋ฒ”์œ„ ์ดˆ๊ณผ ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์š”! ์˜ˆ๋ฅผ ๋“ค์–ด, int[5]
๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๋Š” 0 ~ 4๊นŒ์ง€! ๐Ÿ™…
numbers[5]์ฒ˜๋Ÿผ ์ž˜๋ชป ์ ‘๊ทผํ•˜๋ฉด: "ArrayIndexOutOfBoundsException" ์˜ˆ์™ธ ๋ฐœ์ƒ
๋ฐฐ์—ด ๊ธธ์ด๋Š” ๊ณ ์ • ํ•œ ๋ฒˆ ๋งŒ๋“  ๋ฐฐ์—ด์€ ํฌ๊ธฐ๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†์–ด์š”! ๋งŒ์•ฝ ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๊ณ  ์‹ถ๋‹ค๋ฉด? โ†’ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋งŒ๋“ค๊ณ , ๋ณต์‚ฌํ•ด์•ผ ํ•ด์š”
ํƒ€์ž… ๋ถˆ์ผ์น˜ ์ €์žฅ ๋ฐฐ์—ด์— ์„ ์–ธ๋œ ํƒ€์ž…๊ณผ ๋‹ค๋ฅธ ํƒ€์ž…์˜ ๊ฐ’์„ ์ €์žฅํ•˜๋ ค๊ณ  ํ•˜๋ฉด ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ ๋ฐœ์ƒ (ArrayStoreException)

โŒ ์ž˜๋ชป๋œ ์˜ˆ์‹œ: ์ธ๋ฑ์Šค ์ดˆ๊ณผ

int[] numbers = new int[3];  // ํฌ๊ธฐ 3
numbers[3] = 10;             // โŒ ์˜ค๋ฅ˜! ์ธ๋ฑ์Šค๋Š” 0~2๊นŒ์ง€๋งŒ ์žˆ์Œ
๐Ÿ“ฅ ๊ฒฐ๊ณผ
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3

๐Ÿšซ ์ปดํŒŒ์ผ ์—๋Ÿฌ๊ฐ€ ๋‚˜๋Š” ๊ฒฝ์šฐ

String[] arr = new String[3];
arr[0] = 123;  // โŒ ์ปดํŒŒ์ผ ์—๋Ÿฌ
  • String ํƒ€์ž… ๋ฐฐ์—ด์— int(= 123)์„ ๋„ฃ์œผ๋ ค ํ–ˆ์ฃ .
  • ์ด๊ฑด ๋ช…๋ฐฑํ•œ ํƒ€์ž… ๋ถˆ์ผ์น˜๋‹ˆ๊นŒ ์ปดํŒŒ์ผ ํƒ€์ž„์— ๋ฐ”๋กœ ์—๋Ÿฌ๊ฐ€ ๋‚ฉ๋‹ˆ๋‹ค.
  • ๐Ÿ’ฅ "Incompatible types" ๋ผ๋Š” ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๊ฒŒ ๋ผ์š”.

โ›”๏ธ ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ๊ฐ€ ๋‚˜๋Š” ๊ฒฝ์šฐ (ArrayStoreException)

Object[] arr = new String[3];  // String ๋ฐฐ์—ด์„ Object ๋ฐฐ์—ด์ฒ˜๋Ÿผ ์„ ์–ธ
arr[0] = "yoooCo";              // โœ… ์ •์ƒ
arr[1] = 100;                  // โŒ ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ (ArrayStoreException)
  • ์—ฌ๊ธฐ์„  ์ปดํŒŒ์ผ๋Ÿฌ๋Š” Object[] ๋ผ๊ณ  ๋ณด๋‹ˆ๊นŒ,
    "๋ฌธ์ž์—ด"๋„ ์ •์ˆ˜๋„ ๋„ฃ์„ ์ˆ˜ ์žˆ๊ฒ ๋„ค? ๋ผ๊ณ  ์ƒ๊ฐํ•ด์š”.
  • ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” String[]์ด๊ธฐ ๋•Œ๋ฌธ์—,
    100 ๊ฐ™์€ ๋‹ค๋ฅธ ํƒ€์ž…์ด ๋“ค์–ด๊ฐ€๋ฉด ๋Ÿฐํƒ€์ž„์— ๋นต! ํ„ฐ์ง‘๋‹ˆ๋‹ค. ๐Ÿ’ฃ

๐Ÿ–จ๏ธ ๋ฐฐ์—ด ๋ณต์‚ฌํ•˜๊ธฐ!

๐Ÿ’ก ๋ฐฐ์—ด์€ "๊ทธ๋ฆ‡"์ฒ˜๋Ÿผ ํ•œ ๋ฒˆ ํฌ๊ธฐ๋ฅผ ์ •ํ•˜๋ฉด ๋ฐ”๊ฟ€ ์ˆ˜ ์—†์–ด์š”!
๋” ๋‹ด๊ณ  ์‹ถ๋‹ค๋ฉด, ํฐ ๊ทธ๋ฆ‡์œผ๋กœ ์˜ฎ๊ฒจ์•ผ ํ•˜๋Š” ์…ˆ์ด์ฃ !

โœ… 1. for๋ฌธ ๋ณต์‚ฌ (๊ธฐ๋ณธ ๋ฐฉ์‹)

int[] oldArray = {1, 2, 3};
int[] newArray = new int[5];

// ๋ณต์‚ฌ
for (int i = 0; i < oldArray.length; i++) {
    newArray[i] = oldArray[i];
}

๐Ÿ’ก ์ˆ˜๋™์ด๋ผ์„œ ์œ ์—ฐํ•˜์ง€๋งŒ ์ฝ”๋“œ๊ฐ€ ๊ธธ์–ด์ ธ์š”.

โœ… 2. System.arraycopy() ์‚ฌ์šฉ

int[] oldArr = {1, 2, 3};
int[] newArr = new int[5];

System.arraycopy(oldArr, 0, newArr, 0, oldArr.length);

//System.arraycopy(์›๋ณธ ๋ฐฐ์—ด, ๋ณต์‚ฌ ์‹œ์ž‘ ์ธ๋ฑ์Šค, ๋ณต์‚ฌํ•  ๋ฐฐ์—ด, ๋ณต์‚ฌ ์‹œ์ž‘ ์ธ๋ฑ์Šค, ๋ณต์‚ฌํ•  ๊ฐœ์ˆ˜);
๐Ÿ‘‡ ํ—ท๊ฐˆ๋ฆด ๊ฒƒ ๊ฐ™์•„์„œ ์˜ˆ์ œ๋ฅผ ํ•˜๋‚˜ ๋” ๊ฐ€์ ธ์™”์–ด์š”!
import java.util.Arrays;

public class SystemArrayCopy {
    public static void main(String[] args) {
        int[] oldArr = {1, 2, 3};
        int[] newArr = new int[6];  // ์ƒˆ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋Š” ๋” ํฌ๊ฒŒ

        // newArr์˜ ์ธ๋ฑ์Šค 2๋ถ€ํ„ฐ ๋ณต์‚ฌ
        System.arraycopy(oldArr, 0, newArr, 2, oldArr.length);//์›๋ณธ, ์ธ๋ฑ์Šค, ์ƒˆ๋ฐฐ์—ด, ์ธ๋ฑ์Šค, ๋ณต์‚ฌ์š”์†Œ ๊ฐœ์ˆ˜

        // ์ถœ๋ ฅ
        System.out.println("์›๋ณธ ๋ฐฐ์—ด: " + Arrays.toString(oldArr));
        System.out.println("๋ณต์‚ฌ๋œ ๋ฐฐ์—ด: " + Arrays.toString(newArr));
    }
}
๐Ÿ“ฅ ์ถœ๋ ฅ
์›๋ณธ ๋ฐฐ์—ด: [1, 2, 3]
๋ณต์‚ฌ๋œ ๋ฐฐ์—ด: [0, 0, 1, 2, 3, 0]

๐Ÿ’ก ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์ด์—์š”. ๋ถ€๋ถ„ ๋ณต์‚ฌ๋„ ๊ฐ€๋Šฅ!

๐Ÿ“Œ ๋‹ค์‹œํ•œ๋ฒˆ ํ‘œ๋กœ ์ •๋ฆฌํ–ˆ์–ด์š”!
๋งค๊ฐœ๋ณ€์ˆ˜ ์˜๋ฏธ
oldArr ์›๋ณธ ๋ฐฐ์—ด
0 ๋ณต์‚ฌ ์‹œ์ž‘ ์ธ๋ฑ์Šค (์›๋ณธ)
newArr ๋ณต์‚ฌ ๋Œ€์ƒ ๋ฐฐ์—ด
0 ๋ณต์‚ฌ ์‹œ์ž‘ ์ธ๋ฑ์Šค (๋Œ€์ƒ)
oldArr.length ๋ณต์‚ฌํ•  ์š”์†Œ ์ˆ˜

โœ… 3. Arrays.copyOf() ์‚ฌ์šฉ

import java.util.Arrays;

int[] oldArr = {1, 2, 3};
int[] newArr = Arrays.copyOf(oldArr, 5);

๐Ÿ’ก ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ์›ํ•˜๋Š” ๋งŒํผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์–ด์š”! ๋‚จ์€ ๋ถ€๋ถ„์€ ๊ธฐ๋ณธ๊ฐ’(0) ์œผ๋กœ ์ฑ„์›Œ์ง

๐Ÿคท ์–ธ์ œ ๋ญ ์จ์•ผ ํ• ๊นŒ?

์ƒํ™ฉ ์ถ”์ฒœ ๋ฐฉ๋ฒ•
๋น ๋ฅด๊ณ  ๋ถ€๋ถ„ ๋ณต์‚ฌ๊ฐ€ ํ•„์š”ํ•  ๋•Œ System.arraycopy()
์ „์ฒด ๋ณต์‚ฌํ•˜๊ณ  ๋ฐฐ์—ด ํฌ๊ธฐ๊นŒ์ง€ ์กฐ์ ˆํ•˜๊ณ  ์‹ถ์„ ๋•Œ Arrays.copyOf()
์ง์ ‘ ๋กœ์ง์„ ์ œ์–ดํ•˜๊ณ  ์‹ถ์„ ๋•Œ for๋ฌธ

โ˜• ๋งˆ๋ฌด๋ฆฌ ์ •๋ฆฌ

ํ•ญ๋ชฉ ์„ค๋ช…
์„ ์–ธ ๋ฐฉ๋ฒ• ์ž๋ฃŒํ˜•[] ๋ฐฐ์—ด์ด๋ฆ„ = new ์ž๋ฃŒํ˜•[ํฌ๊ธฐ];
์ดˆ๊ธฐํ™” ๋ฐฉ๋ฒ• {10, 20, 30} ๋˜๋Š” ํ•˜๋‚˜์”ฉ ๋„ฃ๊ธฐ
์ธ๋ฑ์Šค ์‹œ์ž‘ 0๋ถ€ํ„ฐ ์‹œ์ž‘
๋ฐ˜๋ณต ์ถœ๋ ฅ ๋ฐฉ๋ฒ• for๋ฌธ / ํ–ฅ์ƒ๋œ for๋ฌธ
์ฃผ์˜์‚ฌํ•ญ ์ธ๋ฑ์Šค ๋ฒ”์œ„, ํฌ๊ธฐ ๊ณ ์ •

๋์œผ๋กœ... ๐Ÿ™Œ

๋ฐฐ์—ด์€ โ€œ๊ฐ™์€ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ์ €์žฅํ•˜๋Š” ์ƒ์žโ€์ž…๋‹ˆ๋‹ค!
์ˆซ์ž, ๋ฌธ์ž, ๊ฐ์ฒด ๋“ฑ ์–ด๋–ค ์ž๋ฃŒ๋“  ํ•œ ๋ฒˆ์— ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์–ด์š”.
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ž…๋ฌธ์ž๋ผ๋ฉด ๋ฐ˜๋“œ์‹œ ์ตํ˜€์•ผ ํ•  ๊ฐœ๋…์ด์—์š”! ๐Ÿ’ก