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

๋นˆ ๊ตฌ๋ฉ ์ฑ„์šฐ๊ธฐ

[Java] ๋ฐฐ์—ด๋„ ๊ฐ์ฒด์ธ๊ฐ€

์ถœ์ฒ˜

ChatGPT


Java์—์„œ ๋ฐฐ์—ด์€ ๊ฐ์ฒด๋‹ค. ๋ฐฐ์—ด์ด ๊ฐ์ฒด๋ผ๋Š” ์‚ฌ์‹ค์€ Java ์–ธ์–ด์˜ ๋ช‡ ๊ฐ€์ง€ ํŠน์ง•์—์„œ ๋“œ๋Ÿฌ๋‚œ๋‹ค.

 

๋ฐฐ์—ด์˜ ๊ฐ์ฒด์  ํŠน์ง•

1. ํด๋ž˜์Šค ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ

ํด๋ž˜์Šค ์ •์˜

Java์—์„œ ๋ฐฐ์—ด์€ Object ํด๋ž˜์Šค์˜ ์„œ๋ธŒํด๋ž˜์Šค์ด๋‹ค. ๋”ฐ๋ผ์„œ ๋ชจ๋“  ๋ฐฐ์—ด์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ์ฒด์ด๋‹ค. ๋ฐฐ์—ด์ด ์ƒ์„ฑ๋˜๋ฉด JVM์€ ์ž๋™์œผ๋กœ ๋ฐฐ์—ด์˜ ํด๋ž˜์Šค ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

๋ฐฐ์—ด์˜ ํด๋ž˜์Šค ์ด๋ฆ„

๋ฐฐ์—ด์€ ํŠน์ • ํด๋ž˜์Šค ์œ ํ˜•์œผ๋กœ ์ •์˜๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, int[]๋Š” ์ •์ˆ˜ ๋ฐฐ์—ด ํƒ€์ž…์ด๋‹ค. ์ด ๋ฐฐ์—ด์˜ ํด๋ž˜์Šค ์ด๋ฆ„์€ '[I'๋กœ JVM์— ์˜ํ•ด ํ‘œํ˜„๋œ๋‹ค.

Array ํด๋ž˜์Šค

Java๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฐฐ์—ด์˜ ํƒ€์ž…์„ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด Array ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘์ ์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ž˜์Šค๋Š” ์•„๋‹ˆ๋‹ค.

 

2. ํž™ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น

ํž™ ๋ฉ”๋ชจ๋ฆฌ

๋ฐฐ์—ด์„ ๊ฐ์ฒด์ด๊ธฐ ๋•Œ๋ฌธ์— ํž™ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น๋œ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐฐ์—ด์ด ์ƒ์„ฑ๋˜๋ฉด ํž™ ๋ฉ”๋ชจ๋ฆฌ์— ๊ทธ ๊ณต๊ฐ„์ด ํ• ๋‹น๋˜๊ณ , ํ•ด๋‹น ๋ฐฐ์—ด์˜ ์ฐธ์กฐ๊ฐ€ ์Šคํƒ์— ์ €์žฅ๋œ๋‹ค.

๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜

๋ฐฐ์—ด์€ ๊ฐ์ฒด์ด๋ฏ€๋กœ, ๋” ์ด์ƒ ์ฐธ์กฐ๋˜์ง€ ์•Š๋Š” ๋ฐฐ์—ด์€ JVM์˜ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์— ์˜ํ•ด ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด์ œ๋  ์ˆ˜ ์žˆ๋‹ค.

 

3. ๋ฐฐ์—ด ๋ฉ”์„œ๋“œ

length ํ•„๋“œ

๋ชจ๋“  ๋ฐฐ์—ด์€ length ๋ผ๋Š” ํ•„๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด, ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ์•Œ๋ ค์ค€๋‹ค. ์ด๋Š” ๊ฐ์ฒด์˜ ์†์„ฑ์ฒ˜๋Ÿผ ์ž‘์šฉํ•œ๋‹ค.

int[] numbers = {1, 2, 3, 4, 5};
System.out.println(numbers.length);  // ์ถœ๋ ฅ: 5

 

4. Reflection API๋ฅผ ํ†ตํ•œ ๋ฐฐ์—ด ์กฐ์ž‘

Reflection 

Java Reflection API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐฐ์—ด์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ๋ฐฐ์—ด์„ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ๋ฐฐ์—ด์ด ๊ฐ์ฒด๋กœ ์ทจ๊ธ‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด๋‹ค.

import java.lang.reflect.Array;

public class ArrayReflection {
    public static void main(String[] args) {
        int[] intArray = (int[]) Array.newInstance(int.class, 5);
        Array.setInt(intArray, 0, 10);
        System.out.println(Array.getInt(intArray, 0));  // ์ถœ๋ ฅ: 10
    }
}

 

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

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

Java์—์„œ ๋‹ค์ฐจ์› ๋ฐฐ์—ด์€ ๋ฐฐ์—ด์˜ ๋ฐฐ์—ด์ด๋‹ค. ์ด๋Š” ๋ฐฐ์—ด์ด ๊ฐ์ฒด๋กœ ์ฒ˜๋ฆฌ๋˜๋Š” ๋ฐฉ์‹์˜ ์˜ˆ์‹œ ์ค‘ ํ•˜๋‚˜์ด๋‹ค.

int[][] matrix = new int[3][3];
System.out.println(matrix.length);     // ์ฒซ ๋ฒˆ์งธ ์ฐจ์›์˜ ๊ธธ์ด ์ถœ๋ ฅ: 3
System.out.println(matrix[0].length);  // ๋‘ ๋ฒˆ์งธ ์ฐจ์›์˜ ๊ธธ์ด ์ถœ๋ ฅ: 3

 

6. ๋ฐฐ์—ด์˜ ๋ฉ”๋ชจ๋ฆฌ ๋ ˆ์ด์•„์›ƒ

๋ฉ”๋ชจ๋ฆฌ ๋ ˆ์ด์•„์›ƒ

๋ฐฐ์—ด์€ ์—ฐ์†๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ์ €์žฅ๋œ๋‹ค. ์ด๋Š” ๋ฐฐ์—ด์ด ๊ฐ์ฒด์ด๋ฉด์„œ๋„ C/C++์˜ ๋ฐฐ์—ด์ฒ˜๋Ÿผ ํšจ์œจ์ ์ธ ์ด์œ ์ด๋‹ค. ๋ฐฐ์—ด์˜ ์‹œ์ž‘ ์ฃผ์†Œ๋ฅผ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด, ๊ฐ ์š”์†Œ์— ๋Œ€ํ•œ ์˜คํ”„์…‹์„ ๊ณ„์‚ฐํ•ด ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

 

7. 'instanceof' ์—ฐ์‚ฐ์ž

instanceof ์—ฐ์‚ฐ์ž

๋ฐฐ์—ด์€ instanceof ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด์ž„์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

int[] numbers = {1, 2, 3};
if (numbers instanceof Object) {
    System.out.println("numbers๋Š” ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.");
}

 

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

๋ฐฐ์—ด ์ƒ์„ฑ๊ณผ ์ดˆ๊ธฐํ™”

๋ฐฐ์—ด์€ ๊ฐ์ฒด๋กœ์„œ new ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด ์ƒ์„ฑ๋œ๋‹ค.

int[] numbers = new int[5];  // ๋ฐฐ์—ด ์ƒ์„ฑ
String[] strings = new String[]{"Java", "Python", "C++"};  // ๋ฐฐ์—ด ์ดˆ๊ธฐํ™”

 

๋ฐฐ์—ด ์‚ฌ์šฉ์˜ ์˜ˆ

์˜ˆ์ œ : ์ˆซ์ž ๋ฐฐ์—ด

public class ArrayExample {
    public static void main(String[] args) {
        int[] numbers = {10, 20, 30, 40, 50};

        for (int number : numbers) {
            System.out.println(number);
        }
    }
}

 

์˜ˆ์ œ : ๋‹ค์ฐจ์› ๋ฐฐ์—ด

public class MultiDimensionalArray {
    public static void main(String[] args) {
        int[][] matrix = {
            {1, 2, 3},
            {4, 5, 6},
            {7, 8, 9}
        };

        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) {
                System.out.print(matrix[i][j] + " ");
            }
            System.out.println();
        }
    }
}

 

๊ฒฐ๋ก 

Java์—์„œ ๋ฐฐ์—ด์€ ๊ฐ์ฒด๋กœ ์ทจ๊ธ‰๋˜๋ฉฐ, ์ด๋Š” Java์˜ ๊ฐ์ฒด ์ง€ํ–ฅ์  ์„ค๊ณ„์— ๋ถ€ํ•ฉํ•œ๋‹ค. ๋ฐฐ์—ด์€ Object ํด๋ž˜์Šค์˜ ์„œ๋ธŒํด๋ž˜์Šค๋กœ์„œ, ๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ์ฒด๋กœ ํ• ๋‹น๋˜๊ณ  ๋‹ค์–‘ํ•œ ๊ฐ์ฒด์  ํŠน์„ฑ์„ ๊ฐ€์ง„๋‹ค. ๋ฐฐ์—ด์„ ๊ฐ์ฒด๋กœ ์„ค๊ณ„ํ•œ ์ด์œ ๋Š” ๋ฐฐ์—ด์˜ ํŽธ๋ฆฌํ•œ ์‚ฌ์šฉ๊ณผ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์›์น™์„ ์ค€์ˆ˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋‹ค.


ChatGPT๊ฐ€ ์•Œ๋ ค์ค€ ๊ธ€์˜ ์ถœ์ฒ˜

์ถœ์ฒ˜

In the Java programming language, arrays  are objects (§4.3.1), are dynamically created, and may be assigned to variables of type Object (§4.3.2). All methods of class Object may be invoked on an array.

Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ๋ฐฐ์—ด์€ ๊ฐ์ฒด(§4.3.1)์ด๊ณ  ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋˜๋ฉฐ ๊ฐ์ฒด ์œ ํ˜•(§4.3.2)์˜ ๋ณ€์ˆ˜์— ํ• ๋‹น๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Object ํด๋ž˜์Šค์˜ ๋ชจ๋“  ๋ฉ”์†Œ๋“œ๋Š” ๋ฐฐ์—ด์—์„œ ํ˜ธ์ถœ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Oracle Java Tutorials
An array  is a container object that holds a fixed number of values of a single type.
๋ฐฐ์—ด์€ ๋‹จ์ผ ์œ ํ˜•์˜ ๊ณ ์ •๋œ ์ˆ˜์˜ ๊ฐ’์„ ๋ณด์œ ํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ ๊ฐœ์ฒด์ž…๋‹ˆ๋‹ค.
  • Effective Java by Joshua Bloch
    • ๋‚ด์šฉ: Java์˜ ๋ฐฐ์—ด๊ณผ ๊ฐ์ฒด ์ง€ํ–ฅ์  ์„ค๊ณ„์— ๋Œ€ํ•œ ์„ค๋ช…์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
    • ๋งํฌ: Effective Java

์ง‘์— ์žˆ๋Š” ์ฑ…์ธ๋ฐ, ์•„์ง ์ฑ…์„ ๋๊นŒ์ง€ ๋‹ค ์•ˆ ์ฝ์–ด์„œ ๊ทธ๋Ÿฐ๊ฐ€... ์ฑ…์˜ ์–ด๋””์— ์ด๋Ÿฐ ๋‚ด์šฉ์ด ์žˆ๋Š”์ง€๋Š” ๋ชจ๋ฅด๊ฒ ๋‹ค.

  • Java: The Complete Reference by Herbert Schildt
    • ๋‚ด์šฉ: Java ๋ฐฐ์—ด์˜ ๊ฐœ๋…๊ณผ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๋ฐฉ์‹์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
    • ๋งํฌ: Java: The Complete Reference