๐Ÿš€ ์ž๋ฐ” ๋ฐฐ์—ด๊ณผ ๊ฐ์ฒด ๋ฐฐ์—ด ์ •๋ฆฌ

My Pale Blue Dotยท2025๋…„ 3์›” 5์ผ
0

JAVA

๋ชฉ๋ก ๋ณด๊ธฐ
14/35
post-thumbnail

๐Ÿ“† ๋‚ ์งœ: 2025-03-05


1๏ธโƒฃ ๋ฐฐ์—ด(Array)์ด๋ž€?

โœ… ๋ฐฐ์—ด์˜ ๊ฐœ๋…

๋ฐฐ์—ด(Array)์€ ๊ฐ™์€ ์ž๋ฃŒํ˜•์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ์†์ ์œผ๋กœ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.
์ž๋ฐ”์—์„œ ๋ฐฐ์—ด์€ ํ•œ ๋ฒˆ ์ƒ์„ฑ๋˜๋ฉด ํฌ๊ธฐ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค๋Š” ํŠน์ง•์ด ์žˆ๋‹ค.

โœ… ๋ฐฐ์—ด์˜ ํŠน์ง•

โœ” ๊ฐ™์€ ์ž๋ฃŒํ˜•์˜ ๊ฐ’๋งŒ ์ €์žฅ ๊ฐ€๋Šฅ
โœ” ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋Š” ๊ณ ์ •๋จ (๋™์  ํฌ๊ธฐ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€)
โœ” ์ธ๋ฑ์Šค(0๋ถ€ํ„ฐ ์‹œ์ž‘)๋ฅผ ํ†ตํ•ด ์ ‘๊ทผ ๊ฐ€๋Šฅ
โœ” ๋ฐฐ์—ด์˜ ๊ธธ์ด๋Š” ๋ฐฐ์—ด๋ช….length๋กœ ํ™•์ธ ๊ฐ€๋Šฅ


2๏ธโƒฃ 1์ฐจ์› ๋ฐฐ์—ด (์ž…๋ ฅ & ์ถœ๋ ฅ & ์ตœ๋Œ€๊ฐ’/์ตœ์†Œ๊ฐ’ ๊ตฌํ•˜๊ธฐ)

๐Ÿ”น 1์ฐจ์› ๋ฐฐ์—ด์˜ ์„ ์–ธ ๋ฐ ์ดˆ๊ธฐํ™”

int[] arr1 = new int[5];  // ํฌ๊ธฐ๊ฐ€ 5์ธ ์ •์ˆ˜ํ˜• ๋ฐฐ์—ด ์„ ์–ธ
int[] arr2 = {10, 20, 30, 40, 50};  // ๋ฐฐ์—ด ์„ ์–ธ๊ณผ ๋™์‹œ์— ์ดˆ๊ธฐํ™”

๐Ÿ”น ๋ฐฐ์—ด ์ž…๋ ฅ ๋ฐ ์ถœ๋ ฅ ์˜ˆ์ œ

import java.util.Arrays;
import java.util.Scanner;

public class C01ArrayMain {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in); // ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ๋ฐ›๊ธฐ ์œ„ํ•œ Scanner ๊ฐ์ฒด ์ƒ์„ฑ

        int[] arr = new int[5];  // ํฌ๊ธฐ๊ฐ€ 5์ธ ์ •์ˆ˜ํ˜• ๋ฐฐ์—ด ์„ ์–ธ
        System.out.println("5๊ฐœ์˜ ์ •์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”:");

        // ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ๋ฐฐ์—ด์— ์ €์žฅ
        for (int i = 0; i < arr.length; i++) {
            arr[i] = sc.nextInt();  // ๊ฐ ์ธ๋ฑ์Šค์— ์ž…๋ ฅ๊ฐ’ ์ €์žฅ
        }

        // ๋ฐฐ์—ด ์ถœ๋ ฅ (์ผ๋ฐ˜ for๋ฌธ)
        System.out.println("๋ฐฐ์—ด ์ถœ๋ ฅ (for๋ฌธ ์‚ฌ์šฉ):");
        for (int i = 0; i < arr.length; i++) {
            System.out.println(i + ". " + arr[i]);
        }

        // ๋ฐฐ์—ด ์ถœ๋ ฅ (for-each ๋ฌธ)
        System.out.println("๋ฐฐ์—ด ์ถœ๋ ฅ (for-each๋ฌธ ์‚ฌ์šฉ):");
        for (int el : arr) {
            System.out.println(el);
        }

        // ๋ฐฐ์—ด ์ถœ๋ ฅ (๋žŒ๋‹ค ์ŠคํŠธ๋ฆผ)
        System.out.println("๋ฐฐ์—ด ์ถœ๋ ฅ (๋žŒ๋‹ค ์ŠคํŠธ๋ฆผ ์‚ฌ์šฉ):");
        Arrays.stream(arr).forEach(System.out::println);  // ์ŠคํŠธ๋ฆผ์„ ํ™œ์šฉํ•˜์—ฌ ์ถœ๋ ฅ

        // ๋ฐฐ์—ด ์ตœ๋Œ€๊ฐ’๊ณผ ์ตœ์†Œ๊ฐ’ ์ถœ๋ ฅ
        System.out.println("MAX : " + Arrays.stream(arr).max().getAsInt()); // ์ตœ๋Œ€๊ฐ’
        System.out.println("MIN : " + Arrays.stream(arr).min().getAsInt()); // ์ตœ์†Œ๊ฐ’

        sc.close(); // Scanner ๋‹ซ๊ธฐ
    }
}

โœ… ๋ฐฐ์šด ์ 
โœ” ๋ฐฐ์—ด์— ์‚ฌ์šฉ์ž ์ž…๋ ฅ ์ €์žฅ (Scanner ํ™œ์šฉ)
โœ” for, for-each, ๋žŒ๋‹ค ์ŠคํŠธ๋ฆผ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด ์ถœ๋ ฅ
โœ” ๋ฐฐ์—ด์˜ ์ตœ๋Œ€๊ฐ’, ์ตœ์†Œ๊ฐ’ ์ฐพ๊ธฐ (Arrays.stream(arr).max().getAsInt())


3๏ธโƒฃ ์–•์€ ๋ณต์‚ฌ(Shallow Copy)์™€ ๊นŠ์€ ๋ณต์‚ฌ(Deep Copy)

โœ… ๋ฐฐ์—ด ๋ณต์‚ฌ์˜ ๊ฐœ๋…

๋ฐฐ์—ด์„ ๋ณต์‚ฌํ•  ๋•Œ ์–•์€ ๋ณต์‚ฌ(Shallow Copy)์™€ ๊นŠ์€ ๋ณต์‚ฌ(Deep Copy) ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

๋ณต์‚ฌ ๋ฐฉ์‹๊ฐœ๋…ํŠน์ง•
์–•์€ ๋ณต์‚ฌ๋ฐฐ์—ด์˜ ์ฐธ์กฐ(์ฃผ์†Œ) ๋ณต์‚ฌ๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณต์œ  โ†’ ์›๋ณธ ๋ณ€๊ฒฝ ์‹œ ๋ณต์‚ฌ๋ณธ๋„ ๋ณ€๊ฒฝ๋จ
๊นŠ์€ ๋ณต์‚ฌ๋ฐฐ์—ด์˜ ๊ฐ’์„ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์— ๋ณต์‚ฌ๋…๋ฆฝ์ ์ธ ๋ฐฐ์—ด โ†’ ์›๋ณธ ๋ณ€๊ฒฝํ•ด๋„ ๋ณต์‚ฌ๋ณธ ์˜ํ–ฅ ์—†์Œ

๐Ÿ”น ์–•์€ ๋ณต์‚ฌ (Shallow Copy)

int arr1[] = {10, 20, 30};  // ์›๋ณธ ๋ฐฐ์—ด
int arr2[] = arr1;  // ๊ฐ™์€ ์ฃผ์†Œ๋ฅผ ๊ณต์œ ํ•˜๋Š” ์–•์€ ๋ณต์‚ฌ

arr1[0] = 100;  // arr1์„ ๋ณ€๊ฒฝํ•˜๋ฉด arr2๋„ ๊ฐ™์ด ๋ณ€๊ฒฝ๋จ

System.out.println(Arrays.toString(arr1));  // [100, 20, 30]
System.out.println(Arrays.toString(arr2));  // [100, 20, 30]

โœ… ๊ฐ™์€ ๋ฐฐ์—ด์„ ๊ฐ€๋ฆฌํ‚ค๋ฏ€๋กœ arr1์„ ๋ณ€๊ฒฝํ•˜๋ฉด arr2๋„ ๋ณ€๊ฒฝ๋จ


๐Ÿ”น ๊นŠ์€ ๋ณต์‚ฌ (Deep Copy)

int arr3[] = new int[arr1.length];  // ์ƒˆ๋กœ์šด ๋ฐฐ์—ด ์„ ์–ธ
for (int i = 0; i < arr1.length; i++) {
    arr3[i] = arr1[i];  // ๊ฐ’ ํ•˜๋‚˜์”ฉ ๋ณต์‚ฌ (์™„์ „ํ•œ ๋ณ„๋„ ๋ฐฐ์—ด)
}

โœ… ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๊ณ , ์›๋ณธ ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ๋ณต์‚ฌํ•˜์—ฌ ๋…๋ฆฝ์ ์ธ ๋ฐฐ์—ด ์ƒ์„ฑ


4๏ธโƒฃ 2์ฐจ์› ๋ฐฐ์—ด (Multidimensional Arrays)

โœ… 2์ฐจ์› ๋ฐฐ์—ด์˜ ๊ฐœ๋…

โœ” 2์ฐจ์› ๋ฐฐ์—ด์€ ํ–‰(row)๊ณผ ์—ด(column)๋กœ ๊ตฌ์„ฑ๋œ ๋ฐฐ์—ด
โœ” ๋ฐฐ์—ด๋ช….length โ†’ ํ–‰์˜ ๊ฐœ์ˆ˜๋ฅผ ์˜๋ฏธ
โœ” ๋ฐฐ์—ด๋ช…[i].length โ†’ i๋ฒˆ์งธ ํ–‰์˜ ์—ด ๊ฐœ์ˆ˜๋ฅผ ์˜๋ฏธ


๐Ÿ”น 2์ฐจ์› ๋ฐฐ์—ด ์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™”

int arr[][] = { 
    { 10, 20, 30 }, 
    { 40, 50, 60, 65, 67 }, 
    { 70, 80, 90, 96, 11, 56 },
    { 100, 110, 120, 15, 22, 33, 44 }, 
};

โœ… ๊ฐ ํ–‰์˜ ํฌ๊ธฐ๊ฐ€ ๋‹ค๋ฅธ ๊ฐ€๋ณ€ ๊ธธ์ด ๋ฐฐ์—ด ์„ ์–ธ ๊ฐ€๋Šฅ


5๏ธโƒฃ ๊ฐ์ฒด ๋ฐฐ์—ด (Class Array)

โœ… ๊ฐ์ฒด ๋ฐฐ์—ด์˜ ๊ฐœ๋…

โœ” ๊ธฐ๋ณธ ์ž๋ฃŒํ˜• ๋ฐฐ์—ด(int[])๊ณผ ๋‹ฌ๋ฆฌ ๊ฐ์ฒด ๋ฐฐ์—ด์€ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฐ์—ด
โœ” ๋ฐฐ์—ด ์š”์†Œ์— ๊ฐ์ฒด๋ฅผ ํ• ๋‹นํ•œ ํ›„ ์‚ฌ์šฉํ•ด์•ผ ํ•จ!


๐Ÿ”น ํด๋ž˜์Šค๋ฅผ ํ™œ์šฉํ•œ ๊ฐ์ฒด ๋ฐฐ์—ด ์ƒ์„ฑ

class C04Person {
    String name;
    int age;

    // ๋””ํดํŠธ ์ƒ์„ฑ์ž
    public C04Person() {}

    // ๋ชจ๋“  ์ธ์ž๋ฅผ ๋ฐ›๋Š” ์ƒ์„ฑ์ž
    public C04Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // toString() ์žฌ์ •์˜
    @Override
    public String toString() {
        return "C04Person [name=" + name + ", age=" + age + "]";
    }
}

public class C04ClassArrayMain {
    public static void main(String[] args) {
        // ๊ฐ์ฒด ๋ฐฐ์—ด ์„ ์–ธ
        C04Person list[] = new C04Person[3];

        // ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋ฐฐ์—ด์— ์ €์žฅ
        list[0] = new C04Person("ํ™๊ธธ๋™", 55);
        list[1] = new C04Person("๊น€์˜ํฌ", 35);
        list[2] = new C04Person("๊น€๋ฒ”์ˆ˜", 40);

        // ๋ฐฐ์—ด์„ ์ด์šฉํ•˜์—ฌ ๊ฐ์ฒด ์ •๋ณด ์ถœ๋ ฅ
        for (C04Person person : list) {
            System.out.println(person);  // toString() ์ž๋™ ํ˜ธ์ถœ
        }
    }
}

โœ… ๊ฐ์ฒด ๋ฐฐ์—ด์„ ํ™œ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ฐœ์˜ C04Person ๊ฐ์ฒด๋ฅผ ๊ด€๋ฆฌ
โœ… toString()์„ ์žฌ์ •์˜ํ•˜์—ฌ ๊ฐ์ฒด ์ •๋ณด๋ฅผ ์‰ฝ๊ฒŒ ์ถœ๋ ฅ


profile
Here, My Pale Blue.๐ŸŒ

0๊ฐœ์˜ ๋Œ“๊ธ€