day-4 (23.05.05)

정길규·2023년 5월 5일

Part 04. 배열

배열

배열은 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것입니다.

public class Array {
    public static void main(String[] args) {
        // 배열 : 같은 자료형의 값 여러 개를 저장하는 연속된 공간

        // 배열 선언 첫 번째 방법
//        String[] coffees = new String[4];

        // 두 번째 방법
//        String coffees[] = new String[4]

//        coffees[0] = "아메리카노"; // 0 부터 시작
//        coffees[1] = "카페모카";
//        coffees[2] = "라떼";
//        coffees[3] = "카푸치노";

        // 세 번째 방법
//        String[] coffees = new String[] {"아메리카노", "카페모카", "라떼", "카푸치노"};

        // 네 번째 방법
        String[] coffees = {"아메리카노", "카페모카", "라떼", "카푸치노"};

        // 커피 주문
        System.out.println(coffees[0] + " 하나"); // 아메리카노 하나
        System.out.println(coffees[1] + " 하나"); // 카페모카 하나
        coffees[2] = "에스프레소"; // 값 변경
        System.out.println(coffees[2] + " 하나"); // 에스프레소 하나
        System.out.println(coffees[3] + " 하나"); // 카푸치노 하나
        System.out.println("주세요");

    }
}

배열 순회

배열을 하나씩 출력을 하는 것도 가능 하지만 for 문을 통해 한번에 출력 가능. (foreach)

public class ArrayLoop {
    public static void main(String[] args) {
        // 배열의 순회
        String[] coffees = {"아메리카노", "카페모카", "라떼", "카푸치노"};

        // for 반복문 순회
        for (int i = 0; i < 4; i++) {
            System.out.println(coffees[i] + " 하나");
        }
        System.out.println("주세요");

        System.out.println("-------------");

        // 배열의 길이를 이용한 순회
        for (int i = 0; i < coffees.length; i++) {
            System.out.println(coffees[i] + " 하나");
        }
        System.out.println("주세요");
        System.out.println("--------------");

        // enhanced for (for-each) 반복문  // foreach로 빠르게 작성가능
        for (String coffee : coffees) {
            System.out.println(coffee + "하나");
        }
        System.out.println("주세요");
    }
}

2차원 배열

테이블 형태의 데이터를 저장하기 위한 배열

public class MultiArray {
    public static void main(String[] args) {
        // 다차원 배열 (2차원 배열)

        // 소규모 영화관 좌석
        // A1 - A5
        // B1 - B5
        // C1 - C5

        String[] setA = {"A1", "A2", "A3", "A4", "A5"};
        String[] setB = {"B1", "B2", "B3", "B4", "B5"};
        String[] setC = {"C1", "C2", "C3", "C4", "C5"};

        String[][] sets = new String[][] {
                {"A1", "A2", "A3", "A4", "A5"},
                {"B1", "B2", "B3", "B4", "B5"},
                {"C1", "C2", "C3", "C4", "C5"}
        };
        // B2 에 접근하려면?
        System.out.println(sets[1][1]);

        // C5 에 접근할려면?
        System.out.println(sets[2][4]);

        // 첫 줄에는 3칸, 둘째 줄에는 4칸, 셋째 줄에는 5칸
        String[][] sets2 = {
                {"A1", "A2", "A3"},
                {"B1", "B2", "B3", "B4"},
                {"C1", "C2", "C3", "C4", "C5"}
        };

        // A3 에 접근하려면?
        System.out.println(sets2[0][2]);

        // 3차원 배열 만들기
        String[][][] marray = new String[][][] {
                { {}, {}, {} },
                { {}, {}, {} },
                { {}, {}, {} }
        };
    }
}

문자열 비교와 출력

equals(), toString()

public class Arrays6_1 {
    public static void main(String[] args) {
        int[] num = {0, 1, 2};
        int [][] score = {
                {88,35, 100},
                {84, 60, 55},
                {100, 99, 72},
                {33, 54, 77}
        };
        System.out.println("Arrays.toString(num) = " + Arrays.toString(num));
        System.out.println("Arrays.deepToString(score) = " + Arrays.deepToString(score));
        System.out.println();

        String[][] strArr1 = {
                {"AAA", "BBB", "CCC"},
                {"aaa", "bbb", "ccc"}
        };
        String[][] strArr2 = {
                {"AAA", "BBB", "CCC"},
                {"aaa", "bbb", "ccc"}
        };

        // 1 차원 비교에서는 equals
        System.out.println("Arrays.equals(strArr1[0], strArr2[0] = " + Arrays.equals(strArr1[0], strArr2[0])); // true
        System.out.println("Arrays.equals(strArr1[1], strArr2[0] = " + Arrays.equals(strArr1[1], strArr2[0])); // false

        System.out.println("Arrays.equals(strArr1, strArr2 = " + Arrays.equals(strArr1, strArr2)); // false
        // 다차원 비교에는 deepEquals
        System.out.println("Arrays.deepEquals(strArr1, strArr2 = " + Arrays.deepEquals(strArr1, strArr2)); // true
    }
}

배열 복사

copeOf(), copeOfRange()

import java.util.Arrays;

public class Arrays6_2 {
    public static void main(String[] args) {
        int[] arr = {0, 1, 2, 3, 4};
        System.out.println("Arrays.toString(arr) = " + Arrays.toString(arr));

        System.out.println();

        //copyOf
         int[] arr2 = Arrays.copyOf(arr, arr.length);
        System.out.println("Arrays.toString(arr2) = " + Arrays.toString(arr2));
        int[] arr3 = Arrays.copyOf(arr, 3);
        System.out.println("Arrays.toString(arr3) = " + Arrays.toString(arr3));
        int[] arr4 = Arrays.copyOf(arr, 7); // 범위가 넘어가는 복사는 초기화값이 들어간다. [0, 1, 2, 3, 4, 0, 0]
        System.out.println("Arrays.toString(arr4) = " + Arrays.toString(arr4));

        System.out.println();

        // copyOfRange
        int[] arr5 = Arrays.copyOfRange(arr, 2, 4);
        System.out.println("Arrays.toString(arr5) = " + Arrays.toString(arr5));
        int[] arr6 = Arrays.copyOfRange(arr, 0, 7); // 범위가 넘어가는 복사는 초기화값이 들어간다.
        System.out.println("Arrays.toString(arr6) = " + Arrays.toString(arr6));
    }
}

정렬

sort()

import java.util.Arrays;

public class Arrays6_3 {
    public static void main(String[] args) {
        int[] arr = {3, 1, 8, 5, 9, 2, 10, 7, 6, 4};
        System.out.println("Arrays.toString(arr) = " + Arrays.toString(arr));
        System.out.println();

        Arrays.sort(arr); // 오름차순으로 정렬됩니다.
        System.out.println("sort");
        System.out.println("Arrays.toString(arr) = " + Arrays.toString(arr));
    }
}

4일차를 마치며

오늘은 배열에 대해서 공부하였다. 느낌은 변수가 확장된 느낌이 들었다. 아직까지는 무작정 따라만 하고 있는데 늘어나는거는 영문타만 늘고 있는것 같은 느낌이든다.

0개의 댓글