๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋ชฉ๋ก์ด ์—†์Šต๋‹ˆ๋‹ค.

[JAVA] ๋ฐฐ์—ด (Array)

๐Ÿ—ฃ Language/JAVA

    ์ž๋ฐ”(JAVA)์ž๋ฐ”(JAVA)


    ๋ฐฐ์—ด์€ ๊ฑฐ์˜ ๋ชจ๋“  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์— ๊ณตํ†ต์ ์œผ๋กœ ์กด์žฌํ•˜๋Š” ์ž๋ฃŒํ˜•์ด๋‹ค

    ์–ธ์–ด์— ๋”ฐ๋ผ ๊ฐ์ž ํŠน์„ฑ์— ๋งž๊ฒŒ ์กฐ๊ธˆ์”ฉ ์ฐจ์ด๊ฐ€ ์žˆ๋Š”๋ฐ

    ์ž๋ฐ”์˜ ๋ฐฐ์—ด์€ ์–ด๋–ค ์ฐจ์ด๊ฐ€ ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด์ž



    ๋ฐฐ์—ด(Array) ์ด๋ž€?


    ๋ฐฐ์—ด์€ ๊ฐ™์€ ํƒ€์ž…์˜ ์—ฌ๋Ÿฌ ๋ณ€์ˆ˜๋ฅผ ํ•˜๋‚˜์˜ ๋ฌถ์Œ์œผ๋กœ ๋‹ค๋ฃจ๋Š” ๊ฒƒ

    ์˜ˆ๋ฅผ๋“ค์–ด ํ•™์ƒ 10000๋ช…์˜ ์ ์ˆ˜๋ฅผ ๋ณ€์ˆ˜์— ์ €์žฅํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐฐ์—ด์ด ์—†๋‹ค๋ฉด

    10000๊ฐœ์˜ int ํƒ€์ž…์˜ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธ์„ ํ•ด์ฃผ์–ด์•ผ ํ•˜๋Š” ๋‚œ๊ฐํ•œ ์ƒํ™ฉ์ด ๋ฒŒ์–ด์ง„๋‹ค.


    1
    2
    3
    4
    5
    6
    int score1;
    int score2;
    ...
    ...
    ...
    int score10000;
    cs



    ์ด๋Ÿฐ ๋ฒˆ๊ฑฐ๋กœ์›€์„ ๋ฐฐ์—ด์„ ์ด์šฉํ•˜๋ฉด ํ•œ ์ค„๋กœ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋‹ค


    1
    int[] score = new int[10000]
    cs





    ๋ฐฐ์—ด์˜ ์„ ์–ธ๊ณผ ์ƒ์„ฑ


    ์ž๋ฐ”์˜ ๋ฐฐ์—ด์€ ์„ ์–ธ๊ณผ ์ƒ์„ฑ์ด ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๋Š”๋ฐ

    ์„ ์–ธ์€ ์ฐธ์กฐ๋ณ€์ˆ˜๋ฅผ ์œ„ํ•œ ๊ณต๊ฐ„์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๊ณ  ์ƒ์„ฑ์„ ํ•ด์•ผ๋งŒ ๋น„๋กœ์†Œ ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์ด ๋งŒ๋“ค์–ด์ง„๋‹ค


    1
    2
    3
    int[] score;    // int ํƒ€์ž…์˜ ๋ฐฐ์—ด์„ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•œ ์ฐธ์กฐ๋ณ€์ˆ˜ score ์„ ์–ธ
    // int score[];    // ์ด๋ ‡๊ฒŒ๋„ ๊ฐ€๋Šฅ
    score = new int[5]    // ๋ฐฐ์—ด์„ ์ƒ์„ฑ (์‹ค์ œ ์ €์žฅ๊ณต๊ฐ„์„ ์ƒ์„ฑ)
    cs



    ๋ณดํ†ต์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฐ„๋žตํžˆ ํ•œ ์ค„๋กœ ์„ ์–ธ๊ณผ ์ƒ์„ฑ์„ ๋™์‹œ์— ํ•œ๋‹ค


    1
    2
    3
    int[] score = new int[5];    // ๊ธธ์ด๊ฐ€ 5์ธ int ํƒ€์ž… ๋ฐฐ์—ด
     
    int[] test = new int[0];    // ๊ธธ์ด๊ฐ€ 0์ธ ๋ฐฐ์—ด๋„ ์ƒ์„ฑ 
    cs



    ๊ธธ์ด๊ฐ€ 0์ธ ๋ฐฐ์—ด์€ ํ‘œ์ค€์€ ์•„๋‹ˆ์ง€๋งŒ ๋Œ€ํ˜• ๋ฒค๋”๋“ค์€ ๊ฑฐ์˜ ๋‹ค ์ง€์›ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค

    ๋ณดํ†ต์€ ์ €๋ ‡๊ฒŒ ๋…๋ฆฝ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ๋Š” ๋“œ๋ฌผ๊ณ  ๊ตฌ์กฐ์ฒด๋‚˜ ํด๋ž˜์Šค ์•ˆ์—์„œ ๋ฉค๋ฒ„๋ณ€์ˆ˜๋กœ ์ƒ์„ฑ์ด ๋˜์–ด ํ™œ์šฉ๋œ

    ์ž๋ฐ”์˜ ์ •์„์—์„œ๋Š” for๋ฌธ์„ ๋Œ๋ฆด ๋•Œ '๋ฐฐ์—ด์ด๋ฆ„.length'๋ฅผ ํ†ตํ•ด ์กฐ๊ฑด์‹์„ ๊ฑธ์–ด์ฃผ๋Š”๋ฐ

    ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ null์ธ ๊ฒฝ์šฐ๋Š” ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€๋งŒ 0์ธ๊ฒฝ์šฐ๋Š” ๋Œ์ง€ ์•Š๋Š”๊ฒƒ์œผ๋กœ

    ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค์ง€์•Š๊ณ  ๋„˜์–ด๊ฐ€๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•œ ์šฉ๋„๋กœ๋„ ์‚ฌ์šฉ์ด ๋œ๋‹ค๊ณ  ํ•œ๋‹ค


    ํ•˜์ง€๋งŒ ๋น„ํ‘œ์ค€์ด๊ธฐ๋„ ํ•˜๊ณ  ์ปดํŒŒ์ผ ์‹œ์— ๊ฒฝ๊ณ ๋ฅผ ์ฃผ๊ธฐ๋„ ํ•˜๊ณ  ์‚ฌ์šฉํ•  ๋•Œ์— ์ฃผ์˜ํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ผญ ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ์“ฐ์ง€ ์•Š๋Š”๊ฒƒ์ด ์ •์‹ ๊ฑด๊ฐ•์— ์ข‹์„ ๋“ฏ ์‹ถ๋‹ค




    ๋ฐฐ์—ด์˜ ๊ธธ์ด์™€ ์ธ๋ฑ์Šค


    ๋ฐฐ์—ด์˜ ๊ธธ์ด๋Š” ์–‘์˜์ •์ˆ˜(0ํฌํ•จ)์ด์–ด์•ผ๋งŒ ํ•˜๊ณ  JVM์ด ๊ด€๋ฆฌํ•œ๋‹ค

    ๊ธธ์ด๋ฅผ ์–ป๋Š” ๋ฐฉ๋ฒ•์€ ๋ฐฐ์—ด์ด๋ฆ„.length๋กœ ์ƒ์ˆ˜๋กœ ๋˜์–ด์žˆ๋‹ค, ์ฆ‰ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค


    ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด์„ ์ ‘๊ทผํ•  ๊ฒฝ์šฐ ํšŸ์ˆ˜๋ฅผ ์ง€์ •ํ•  ๋•Œ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ์ด์šฉํ•˜๋ฉด ์ข‹๋‹ค


    1
    2
    3
    for (int i=0; i < score.length; i++) {
        System.out.println(score[i]);
    }
    cs


    ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ฐฐ์—ด์˜ ์ƒ์„ฑ ์‹œ ๊ธธ์ด๋ฅผ ์ˆ˜์ •ํ•ด๋„ for๋ฌธ์˜ ์กฐ๊ฑด๋ฌธ์€ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์•„๋„ ๋˜๊ธฐ ๋•Œ๋ฌธ์—

    ์‹ค์ˆ˜๋ฅผ ์ค„์—ฌ ์˜ˆ์™ธ ๋ฐœ์ƒ์„ ์ค„์—ฌ์ค€๋‹ค


    ์ฐธ๊ณ ๋กœ ์œ„์˜ for๋ฌธ์ฒ˜๋Ÿผ ๋ฐฐ์—ด์˜ length๋ฅผ ์กฐ๊ฑด์‹์—์„œ ์ง์ ‘ ์ ‘๊ทผํ•˜๋Š”๊ฒƒ๋ณด๋‹ค ๋‹ค์Œ ์ฝ”๋“œ์ฒ˜๋Ÿผ ์ง€์—ญ๋ณ€์ˆ˜๋กœ ์บ์‹ฑํ•œ ๋‹ค์Œ์— ์ง€์—ญ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ์กฐ๊ฑด์„ ๊ฑธ์–ด์ฃผ๋ฉด ์„ฑ๋Šฅ์ด ์กฐ๊ธˆ ๋” ๋‚ซ๋‹ค๊ณ  ํ•œ๋‹ค


    1
    2
    3
    4
    5
    int len = score.length;
    for (int i=0; i < len; i++) {
        System.out.println(score[i]);
    }
     
    cs


    ๋‹ค์Œ์œผ๋กœ ์„ฑ๋Šฅ์ด ๋” ์ข‹์€ ๊ฒƒ์€ JDK 5 ๋ถ€ํ„ฐ ์ง€์›๋˜๋Š” ํ–ฅ์ƒ๋œ for๋ฌธ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•œ๋‹ค


    1
    2
    3
    for (int i : score) {
        System.out.println(i);
    }
    cs


    ๋ฌผ๋ก  ํ•˜๋“œ์›จ์–ด๊ฐ€ ์ข‹์•„์ง„ ์„ธ์ƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ์ฐจ์ด๋Š” 100๋งŒ๊ฐœ์˜ ๋ฐ์ดํ„ฐ ์ดํ•˜๋กœ๋Š” ๋ฏธ๋น„ํ•˜์ง€๋งŒ ๊ทธ๋ž˜๋„ ์ฝ”๋”ฉ์Šคํƒ€์ผ์„ ์ข‹์€ ๋ฐฉํ–ฅ์œผ๋กœ ์Šต๊ด€์„ ๋“ค์ด๋Š”๊ฒƒ์ด ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค




    ์ธ๋ฑ์Šค(index)๋Š” ๋ฐฐ์—ด์˜ ์š”์†Œ๋งˆ๋‹ค ๋ถ™์—ฌ์ง„ ์ผ๋ จ๋ฒˆํ˜ธ๋กœ ๊ฐ ์š”์†Œ๋ฅผ ๊ตฌ๋ณ„ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค

    ์ธ๋ฑ์Šค์˜ ๋ฒ”์œ„๋Š” 0๋ถ€ํ„ฐ (๋ฐฐ์—ด๊ธธ์ด-1) ๊นŒ์ง€๋‹ค

    ์—๋ฅผ๋“ค์–ด ์œ„์—์„œ ์„ ์–ธํ•œ intํƒ€์ž… ๋ฐฐ์—ด์€ ๊ธธ์ด๊ฐ€ 5์ด๋ฏ€๋กœ ์ธ๋ฑ์Šค๋Š” 0๋ถ€ํ„ฐ 4๊นŒ์ง€, ์ฆ‰ 0, 1, 2, 3, 4๊ฐ€ ๋œ๋‹ค

    ์ ‘๊ทผ ๋ฐฉ๋ฒ•์€ ๋ณ€์ˆ˜์˜ ์ด๋ฆ„ ๋Œ€์‹  '๋ฐฐ์—ด์ด๋ฆ„[์ธ๋ฑ์Šค]'๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค


    1
    2
    3
    4
    5
    score[0= 0;
    score[1= 10;
    score[2= 20;
    score[3= 30;
    score[4= 40;
    cs


    ๋ฐฐ์—ด์˜ ๋˜ ๋‹ค๋ฅธ ์žฅ์ ์€ index๋กœ ์ƒ์ˆ˜ ๋Œ€์‹  ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ธ๋ฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐ˜๋ณต๋ฌธ๊ณผ ๊ฐ™์ด ํ™œ์šฉํ•œ๋‹ค


    1
    2
    3
    for (int i=0; i < 5; i++) {
        score[i] = i * 10;
    }
    cs



    ๋งŒ์ผ ์ธ๋ฑ์Šค๊ฐ€ ์ˆ˜์‹์œผ๋กœ ๋˜์–ด ์žˆ์œผ๋ฉด ๊ทธ ์ˆ˜์‹์ด ๋จผ์ € ๊ณ„์‚ฐ๋œ๋‹ค. ๊ณ„์‚ฐ์ด ๋˜์•ผ ๋ช‡ ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ์ ‘๊ทผํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค


    1
    2
    3
    int tmp = score[i+1];
    -> int tmp = score[2+1];
    -> int tmp = score[3];
    cs



    ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•  ๋•Œ ๊ฐ€์žฅ ๋งŽ์ด ๋ณผ ์ˆ˜ ์žˆ๋Š” ์˜ˆ์™ธ๋กœ ArrayIndexoOutOfBoundsException์ด ์žˆ๋‹ค

    ์ด๊ฒƒ์€ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ๋ฒ—์–ด๋‚œ ์ธ๋ฑ์Šค๋กœ ์ ‘๊ทผํ•  ๋•Œ ๋‚˜์˜ค๋Š” ์˜ˆ์™ธ์ธ๋ฐ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ด๋Ÿฌํ•œ ์‹ค์ˆ˜๋ฅผ ์žก์•„์ฃผ์ง€ ๋ชปํ•œ๋‹ค

    ์™œ๋ƒํ•˜๋ฉด ๋ฐฐ์—ด์˜ index๋Š” ๋ณ€์ˆ˜๋กœ ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์€๋ฐ ๋ณ€์ˆ˜๋Š” ์‹คํ–‰ ์‹œ์— ๋Œ€์ž…๋˜๋ฏ€๋กœ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ด ๊ฐ’์˜ ๋ฒ”์œ„๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค



    ๋ฐฐ์—ด์˜ ์ดˆ๊ธฐํ™”

    ์ดˆ๊ธฐํ™” ํ•˜๋Š” ๋ฐฉ์‹์€ ๋‹ค์Œ 3๊ฐ€์ง€ ๋ฐฉ์‹์ด ์žˆ๋‹ค


    1
    2
    3
    4
    int[] score = new int[3];
    score[0= 50;
    score[1= 60;
    score[2= 70;
    cs


    1
    2
    3
    4
    5
    int[] score = new score[3];
     
    for (int i=0; i < score.length; i++) {
        score[i] = i * 10 + 50;
    }
    cs


    1
    int[] score = new int[] {506070};
    cs


    1
    int[] score = {506070};

    cs


    ์ด ์ค‘ for๋ฌธ์„ ์ด์šฉํ•œ ์ดˆ๊ธฐํ™” ๋ฐฉ์‹์€ ๊ทธ ๊ฐ’์ด ๊ทœ์น™์ด ์žˆ์–ด์•ผ ์›ํ•˜๋Š” ๊ฐ’์„ ์ดˆ๊ธฐํ™” ๊ฐ€๋Šฅํ•˜๋‹ค

    ๋ณดํ†ต์€ 3๋ฒˆ์งธ ํ˜น์€ 4๋ฒˆ์งธ ๋ฐฉ์‹์œผ๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ƒ์„ฑ๊ณผ ์ดˆ๊ธฐํ™”๋ฅผ ๋™์‹œ์— ํ•œ๋‹ค

    4๋ฒˆ์งธ ๋ฐฉ์‹์ฒ˜๋Ÿผ ์ดˆ๊ธฐํ™”๋ฅผ ํ•  ๋•Œ๋Š” ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค ์™œ๋ƒํ•˜๋ฉด ์„ ์–ธ๊ณผ ์ƒ์„ฑ์„ ๋”ฐ๋กœ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” new int[]๋ฅผ ์ƒ๋žตํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค

    ์ด๊ฒƒ์€ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ์—๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค


    1
    2
    3
    4
    5
    int add(int[] arr) { /* ๋‚ด์šฉ ์ƒ๋žต */ }
     
    int result = add(new int[] {506070});
     
    int result = add({1005090});    // ์—๋Ÿฌ ๋ฐœ์ƒ
    cs



    ๋ฐฐ์—ด์˜ ์ถœ๋ ฅ

    ๋ฐฐ์—ด์˜ ์ถœ๋ ฅ์€ ๋ฐ˜๋ณต๋ฌธ์„ ์ด์šฉํ•˜์—ฌ ์ถœ๋ ฅํ•  ์ˆ˜๋„ ์žˆ๊ณ  ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด์„œ๋„ ํ•  ์ˆ˜ ์žˆ๋‹ค


    1
    2
    3
    for (int i =0; i < array.length; i++) {
        System.out.println(array[i]);
    }
    cs


    1
    System.out.println(Arrays.toString(array));
    cs


    ์˜ˆ์™ธ์ ์œผ๋กœ charํƒ€์ž… ๋ฐฐ์—ด์ธ ๊ฒฝ์šฐ ๋ฐฐ์—ด๋ช…์œผ๋กœ ์ถœ๋ ฅ์ด ๊ฐ€๋Šฅํ•˜๋‹ค


    1
    2
    char[] chArr = {'a''b''c''d'};
    System.out.println(chArr);    // abcd 
    cs


    ๋‹ค๋ฅธ ํƒ€์ž…์€ ๋ฐฐ์—ด๋ช…์œผ๋กœ ์ถœ๋ ฅํ•  ๊ฒฝ์šฐ 'ํƒ€์ž…@์ฃผ์†Œ'๊ฐ’์ด ๋‚˜์˜จ๋‹ค



    ๋ฐฐ์—ด์˜ ๋ณต์‚ฌ

    ๋ฐฐ์—ด์˜ ๊ธธ์ด๋Š” ์ƒ์ˆ˜๊ฐ’์œผ๋กœ ํ•œ ๋ฒˆ ์ง€์ •ํ•˜๋ฉด ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ธธ์ด๋ฅผ ๋Š˜๋ ค์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ

    ๋” ํฐ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๊ณ  ๋ณต์‚ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๋Š˜๋ฆฌ๋Š” ์ˆ˜ ๋ฐ–์— ์—†๋‹ค

    ๋ฐฐ์—ด์„ ๋ณต์‚ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ  for๋ฌธ์„ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    int [] arr = new int[5];
    ...
     
    int[] tmp = new int[arr.length * 2];    // ๊ธฐ์กด ๋ฐฐ์—ด๋ณด๋‹ค ๊ธธ์ด๊ฐ€ 2๋ฐฐ์ธ ๋ฐฐ์—ด ์ƒ์„ฑ
     
    for (int i=0; i < arr.length; i++) {
        tmp[i] = arr[i];    // arr์˜ ๊ฐ’์„ tmp์— 
    }
     
    arr = tmp;    // ์ฐธ์กฐ๋ณ€์ˆ˜ arr์ด ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ํ•จ
    cs


    ์ด ๋•Œ ๊ธฐ์กด์— arr์ด ๊ฐ€๋ฆฌํ‚ค๋˜ ๊ธธ์ด๊ฐ€ 5์ธ ๋ฐฐ์—ด์€ ๋” ์ด์ƒ ์ฐธ์กฐํ•  ์ˆ˜ ์—†๋Š” ๊ณต๊ฐ„์œผ๋กœ JVM์˜ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ์— ์˜ํ•ด์„œ ์ž๋™์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ œ๊ฑฐ๋œ๋‹ค

    ๋‹ค์Œ์€ ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค


    1
    2
    3
    4
    5
    6
    7
    8
    int [] arr = new int[5];
    ...
     
    int[] tmp = new int[arr.length * 2];    // ๊ธฐ์กด ๋ฐฐ์—ด๋ณด๋‹ค ๊ธธ์ด๊ฐ€ 2๋ฐฐ์ธ ๋ฐฐ์—ด ์ƒ์„ฑ
     
    System.arraycopy(arr, 0, tmp, 0, arr.length);    // arr[0]์—์„œ tmp[0]์œผ๋กœ arr.length๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ 
     
    arr = tmp;    // ์ฐธ์กฐ๋ณ€์ˆ˜ arr์ด ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ํ•จ
    cs


    arraycopy()๋Š” ์ง€์ •๋œ ๋ฒ”์œ„์˜ ๊ฐ’๋“ค์„ ํ•œ ๋ฒˆ์— ํ†ต์งธ๋กœ ๋ณต์‚ฌํ•œ๋‹ค. for๋ฌธ๋ณด๋‹ค ํ›จ์”ฌ ํšจ์œจ์ ์ด๋‹ค

    ์ด๊ฒƒ์€ ๋ฐฐ์—ด์ด ๊ฐ ์š”์†Œ๋“ค์ด ์—ฐ์†์ ์œผ๋กœ ์ €์žฅ๋˜์–ด ์žˆ๋‹ค๋Š” ํŠน์„ฑ ๋•Œ๋ฌธ์— ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด๋‹ค

    ์ด๋•Œ๋„ ์—ญ์‹œ ArrayIndexOutOfBoundsException ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค


    ์œ„์˜ ์ž‘์—…์€ ๊ฝค ๋น„์šฉ์ด ๋งŽ์ด ๋“ค๊ธฐ ๋•Œ๋ฌธ์— ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ๋„‰๋„‰ํ•˜๊ฒŒ ์žก์•„์ค˜์„œ ์œ„์˜ ์ž‘์—…์„ ํ•˜์ง€ ์•Š๋„๋ก ํ•˜๋Š”๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹๋‹ค

    ๊ทธ๋ ‡๋‹ค๊ณ  ๋„ˆ๋ฌด ํฌ๊ฒŒ ์žก์œผ๋ฉด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋‚ญ๋น„ํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ ์ ์ ˆํ•œ ๊ธธ์ด๋กœ ์žก์•„์ฃผ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค


    ๋‹ค์ฐจ์› ๋ฐฐ์—ด

    ์ง€๊ธˆ๊นŒ์ง€ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์˜ ๋ฐฐ์—ด์€ 1์ฐจ์› ๋ฐฐ์—ด์ด๋‹ค


    2์ฐจ์› ์ด์ƒ์˜ ๋ฐฐ์—ด, ์ฆ‰ ๋‹ค์ฐจ์› ๋ฐฐ์—ด์€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์—ฌ์œ ์žˆ์œผ๋ฉด ๊ทธ ์ฐจ์›์—๋Š” ์ œํ•œ์ด ์—†๋‹ค

    (ํ•˜์ง€๋งŒ ๋ณดํ†ต 1,2์ฐจ์›์„ ์‚ฌ์šฉํ•˜๊ณ  3์ฐจ์›๋„ ๋ณดํ†ต ์ž˜ ์“ฐ์ง€ ์•Š๋Š”๋‹ค)


    2์ฐจ์› ๋ฐฐ์—ด์˜ ์„ ์–ธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด []๋ฅผ ํ•˜๋‚˜ ๋”์“ฐ๋ฉด ๋œ๋‹ค


    1
    2
    int[][] score;
    int score[][];
    cs


    4ํ–‰ 3์—ด์˜ 2์ฐจ์› ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•œ๋‹ค


    1
    score = new int[4][3];
    cs


    2์ฐจ์› ๋ฐฐ์—ด์˜ ์ดˆ๊ธฐํ™”


    2์ฐจ์› ๋ฐฐ์—ด๋„ ๋˜‘๊ฐ™์€ ๋ฐฐ์—ด์ด๋‹ค. 1์ฐจ์› ๋ฐฐ์—ด๊ณผ ํฌ๊ฒŒ ๋‹ค๋ฅผ๊ฒƒ ์—†๋‹ค

    ๋‹ค๋งŒ, ๊ด„ํ˜ธ{}๋กœ ์ดˆ๊ธฐํ™” ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ํ•œ๋ฒˆ ๋” ๊ด„ํ˜ธ๋ฅผ ๊ฐ์‹ธ์ฃผ๊ณ  ํ–‰๋ณ„๋กœ ','๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค


    1
    2
    3
    int[][] arr = new int[][]{ {123}, {123}, {123} };
     
    int[][] arr = { {123}, {456}, {789} };
    cs


    ์ฐจ์›์ด ์ปค์งˆ์ˆ˜๋ก ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ง€๋Š”๋ฐ 2์ฐจ์› ๋ฐฐ์—ด์˜ ๊ฒฝ์šฐ ํ•œ์ค„๋ณด๋‹ค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ–‰ ๋ณ„๋กœ ์ค„์„ ๋‚˜๋ˆ„์–ด์ฃผ๋ฉด ๊ฐ€๋…์„ฑ์ด ๋” ์ข‹๋‹ค


    1
    2
    3
    4
    5
    int[][] arr = { 
        {123}, 
        {456},
        {789
    };
    cs



    2์ฐจ์› ๋ฐฐ์—ด์€ ๋ฐฐ์—ด์˜ ๋ฐฐ์—ด๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— 2์ฐจ์› ๋ฐฐ์—ด์˜ ๊ธธ์ด๋Š”

    ๊ฐ€์ง€๊ณ ์žˆ๋Š” ๋ฐฐ์—ด์˜ ๊ฐœ์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์œ„์˜ ๋ฐฐ์—ด arr์˜ length๋Š” 3์ด ๋œ๋‹ค

    ๊ทธ ์•ˆ์— arr[0]์˜ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋Š” ์š”์†Œ๋ฅผ 3๊ฐœ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์—ญ์‹œ 3์ด ๋œ๋‹ค


    for๋ฌธ์„ ์ด์šฉํ•ด์„œ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๊ฒƒ์ด๋‹ค


    1
    2
    3
    4
    5
    for (int i=0; i < arr.length; i++) {
        for (int j=0; j < arr[i].length; j++ {
            arr[i][j] = 10;
        }
    }
    cs



    ๊ฐ€๋ณ€ ๋ฐฐ์—ด

    2์ฐจ์› ์ด์ƒ์˜ ๋ฐฐ์—ด์€ '๋ฐฐ์—ด์˜ ๋ฐฐ์—ด' ํ˜•ํƒœ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณด๋‹ค ์ž์œ ๋กœ์šด ํ˜•ํƒœ์˜ ๋ฐฐ์—ด์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค

    ๋‹ค์ฐจ์› ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•  ๋•Œ ์ „์ฒด ๋ฐฐ์—ด ์ฐจ์ˆ˜ ์ค‘ ๋งˆ์ง€๋ง‰ ์ฐจ์ˆ˜์˜ ๊ธธ์ด๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š๊ณ ,

    ๋‚˜์ค‘์— ๊ฐ๊ฐ ๋‹ค๋ฅธ ๊ธธ์ด์˜ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•จ์œผ๋กœ์จ ๊ณ ์ •๋œ ํ˜•ํƒœ๊ฐ€ ์•„๋‹Œ ์œ ๋™์ ์ธ ๊ฐ€๋ณ€ ๋ฐฐ์—ด์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค


    1
    int[][] score = new int[5][3];    // 5ํ–‰ 3์—ด์˜ 2์ฐจ์› ๋ฐฐ์—ด ์ƒ์„ฑ
    cs


    ์œ„ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œํ˜„ ํ•  ์ˆ˜ ์žˆ๋‹ค


    1
    2
    3
    4
    5
    6
    7
    int[][] score = new int[5][];
     
    score[0= new int[3];
    score[1= new int[3];
    score[2= new int[3];
    score[3= new int[3];
    score[4= new int[3];
    cs


    ์œ„์˜ ์ฝ”๋“œ๋ฅผ ์กฐ๊ธˆ ์ˆ˜์ •ํ•˜๋ฉด ๊ฐ ํ–‰๋งˆ๋‹ค ๋‹ค๋ฅธ ๊ธธ์ด์˜ ๋ฐฐ์—ด์„ ๊ฐ€์ง„ 2์ฐจ์› ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค


    1
    2
    3
    4
    5
    6
    7
    int[][] score = new int[5][];
     
    score[0= new int[3];
    score[1= new int[2];
    score[2= new int[4];
    score[3= new int[5];
    score[4= new int[1];
    cs