배열초기화 (2)

1차원 배열 생성에 대한 내용을 아직 안보셨다면 보고 오세요~ >> 1차원 배열 생성(선언 및 초기화)

1차원 배열이 1열로 된 저장공간이었다면 2차원 배열은 matrix(행렬)을 생각하시면 됩니다.

 

2차원 배열 선언

자바에서 2차원 배열은 아래와 같이 선언할 수 있습니다.

    public static void main(String[] args) {
        int[][] array;  // O
        int [][]array;  // X
        int array[][];  // X
    }

지난 1차원 배열 생성 시와는 다르게 제일 위의 방법으로만 문법적 오류 없이 정상적으로 2차원 배열을 선언할 수 있습니다.

 

 

2차원 배열의 초기화

2차원 배열을 초기화 할 때는 아래와 같이 합니다.

    public static void main(String[] args) {

        int[][] array;  // 2차원 배열의 선언

        array = new int[1][5];	// 2차원 배열의 초기화
    }

 

2차원 배열의 선언과 초기화를 동시에 하는 방법

2차원 배열도 1차원 배열처럼 선언과 초기화를 동시에 할 수 있습니다.

    public static void main(String[] args) {
        
        int[][] array = new int[1][5];  // 2차원 배열의 선언과 초기화를 한 번에

    }

 

이렇게 하면 배열 내에는 0으로 기본값이 들어가게 됩니다.

 

1차원 배열과 마찬가지로 아래처럼 초기화도 가능합니다.

    public static void main(String[] args) {

        int[][] array = {{1,2,3}, {4,5,6}};

    }

이렇게 초기화를 한다는 것은 기본값을 하드코딩하여 정해주겠다는 것이겠죠.

 

자, 배열을 선언하고 공간을 만들어 주는 작업을 완료했습니다.

이제 배열에 저장된 내용을 출력하는 것을 한 번 보겠습니다.

 

2차원 배열 출력하기

1차원 배열을 출력할 때는 Arrays.toString() 메서드를 사용했었습니다.

하지만 2차원 배열을 출력할 때는 그 메서드를 사용할 수가 없습니다.

왜냐면 2차원 배열은 배열 안에 배열이 있는 형태이기 때문입니다.

그리고 배열은 기본적으로 Object 이고 Object의 toString이 호출되어 원하는 결과를 출력해주지 않습니다.

따라서 별도로 출력문을 구현해야합니다.

쉽게하려면 아래처럼 loop를 한번 돌리면서 출력을 할 수 있습니다.

    public static void main(String[] args) {

        int[][] array = new int[8][9];  // 구구단 결과값 저장을 위한 2차원 배열의 선언 및 초기화

        for (int i = 0; i < array.length; i++) {
            System.out.println(Arrays.toString(array[i]));
        }
    }

 

그럼 연습삼아 2차원 배열안에 구구단의 결과를 저장해보도록 해볼게요.

 

    public static void main(String[] args) {

        int[][] array = new int[8][9];  // 구구단 결과값 저장을 위한 2차원 배열의 선언 및 초기화

	// 배열에 구구단의 결과값을 저장
        for (int i = 2; i < 10; i++) {
            for (int j = 1; j < 10; j++) {
                array[i-2][j-1] = i * j;
            }
        }

	// 배열에 저장된 내용을 출력
        for (int i = 0; i < array.length; i++) {
            System.out.print((i + 2) + "단: ");
            System.out.print(Arrays.toString(array[i]));
            System.out.println();
        }
    }
    
    
    // 출력 결과
    2단: [2, 4, 6, 8, 10, 12, 14, 16, 18]
    3단: [3, 6, 9, 12, 15, 18, 21, 24, 27]
    4단: [4, 8, 12, 16, 20, 24, 28, 32, 36]
    5단: [5, 10, 15, 20, 25, 30, 35, 40, 45]
    6단: [6, 12, 18, 24, 30, 36, 42, 48, 54]
    7단: [7, 14, 21, 28, 35, 42, 49, 56, 63]
    8단: [8, 16, 24, 32, 40, 48, 56, 64, 72]
    9단: [9, 18, 27, 36, 45, 54, 63, 72, 81]

 

로직을 한번 보면 크게 구구단을 저장할 때와 저장된 내용을 출력하는 부분으로 구분했습니다. 그리고 for-loop문의 조건걸에 하드코딩한 숫자를 사용하기도 하고 array.length 를 사용하기도 했습니다. 가급적 array.length 의 사용을 권장하며 2차원 배열에서 array.length는 행이 몇 개가 존재하는지를 반환하고, array[x].length는 열의 개수를 반환합니다. 구구단은 보통 2단부터 9단까지이기 때문에 배열을 초기화할 때 사이즈를 8행, 9열로 정의를 하였고, array.length 는 8, array[x].length 는 9 가 됩니다.

 

 

이상으로 자바에서 2차원 배열을 생성하고 초기화하고 실제로 데이터를 저장한 뒤 출력하는 것 까지 살펴보았습니다.

질문있으시면 댓글 달아주세요~

 

도움이 되셨다면 공감~ 꾸~~~욱 눌러주세요 ^-^

감사합니다~

세로로 나열된 5개의 네스프레소 배열

이번에는 자바로 1차원 배열을 만들어 보도록 하겠습니다.
자바로 배열을 만드는 방법은 여러 가지가 있습니다.
우선 용어부터 정리하고 가겠습니다.
제가 만든다라고 얘기한 것은 일반적으로 얘기하려고 한 것인데 이는 두 가지 의미를 포함하고 있습니다.
바로 "선언"과 "초기화"입니다.
여기서 "선언"이라는 것은 변수의 이름을 지어주는 것을 얘기하며,
"초기화"라는 것은 그 변수에 값을 할당하는 것을 의미합니다.
이 용어들을 머릿속에 넣고 출발하도록 하겠습니다.

배열을 선언하는 방법

자바에서 배열을 선언하는 방법은 아래와 같이 3가지가 있습니다.

public static void main(String[] args) {

        // 배열을 선언하는 방법
        int[] intArr1;
        int []intArr2;
        int intArr3[];
}

위에서는 int 타입의 배열을 3가지 방법으로 선언해 보았습니다.
int타입 대신 long, double, Integer, Long, Double, String 등 다른 타입을 사용할 수도 있습니다.
이렇게 선언을 해 놓아도 공간(메모리)을 차지하지는 않습니다.
배열은 초기화를 하면서 사이즈를 정해줘야 공간(메모리)을 차지하게 됩니다.
그럼 배열 초기화는 어떻게 할까요?

배열을 초기화하는 방법

배열을 초기화할 때는 아래와 같이 합니다.

public static void main(String[] args) {

        // 배열을 선언하는 방법
        int[] intArr1;

        // 배열을 초기화하는 방법
        intArr1 = new int[3];
}

위 예제에서는 intArr1이라는 이름을 가진 배열을 사이즈가 3인 배열로 초기화를 하였습니다.
이렇게 초기화를 하면 int 타입의 경우 기본값 0으로 세팅이 됩니다.

배열의 선언과 초기화를 동시에 하는 방법

자바에서는 아래와 같이 배열의 선언과 초기화를 동시에 할 수도 있습니다.

public static void main(String[] args) {

        int[] intArr1 = new int[10];    // size 10, index range from 0 to 9
        int []intArr2 = new int[20];    // size 20, index range from 0 to 19
        int intArr3[] = new int[20];    // size 20, index range from 0 to 19
}

위에서 설명드린 선언문과 초기화문을 한 줄에 붙여 쓰면 동시에 선언과 초기화가 가능합니다.

자, 그런데 이렇게 하면 int 타입의 배열에는 모두 0으로 값이 세팅이 됩니다.

전, 제가 원하는 값으로 세팅을 하고 싶은데 그렇게도 할 수 있나요?

물론이죠~ 그렇게도 할 수 있습니다.
아래와 같이 하시면 됩니다.

public static void main(String[] args) {

        int[] intArr4 = {1, 2, 3, 4};   // size 4, index range from 0 to 3
        int[] intArr5 = {0, 0, 0, 0, 0, 0, 0};  // size 7, index range from 0 to 6
}

intArr4에는 [1, 2, 3, 4]가 저장됩니다.
intArr5에는 new int[7] 로 초기화한 것과 같이 0으로 값이 들어갑니다.

배열 출력하기

그럼 이렇게 배열에 들어간 값을 출력해보고 싶을 땐 어떻게 할까요?
자바에서 콘솔창에 출력을 할 때에는 System.out.println() 메서드를 사용하는 것은 다들 알고 계시죠?
Hello World를 해보셨다면 다들 알고 계실겁니다.
그럼 이 메서드를 이용해서 변수이름을 넣어주면 될까요?
아닙니다. 배열이 담긴 변수명만 넣어주면 쓰레기값이 출력이 됩니다.
이런 경우에는 Arrays.toString() 메서드를 이용하면 됩니다.

public static void main(String[] args) {

        int[] intArr1 = new int[10];    // size 10, index range from 0 to 9
        int []intArr2 = new int[20];    // size 20, index range from 0 to 19
        int intArr3[] = new int[20];    // size 20, index range from 0 to 19
        int[] intArr4 = {1, 2, 3, 4};   // size 4, index range from 0 to 3
        int[] intArr5 = {0, 0, 0, 0, 0, 0, 0};  // size 7, index range from 0 to 6

        System.out.println(Arrays.toString(intArr1));
        System.out.println(Arrays.toString(intArr2));
        System.out.println(Arrays.toString(intArr3));
        System.out.println(Arrays.toString(intArr4));
        System.out.println(Arrays.toString(intArr5));
}

출력 결과

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 2, 3, 4]
[0, 0, 0, 0, 0, 0, 0]

이상으로 배열의 선언과 초기화에 대한 포스팅을 마치겠습니다.
궁금한 점이 있으시면 댓글 달아주시면 답변드리겠습니다.

2차원 배열에 대한 내용은 [Java] 자바 2차원 배열 생성(선언 및 초기화)에서 더 다루고 있으니 참고하시구요~

도움이 되셨다면 공감 꾸~~~~욱 눌러주고 가세요 ^-^

감사합니다.