본문 바로가기
Language/Java

[Java] 1차원 배열 & 2차원 배열

by lucas_owner 2022. 12. 12.

 

 

이 글에서는 Java의 1,2차원 배열에 대해서 알아보도록 하겠습니다!! 

 

- 1차원 배열의 선언, 초기화, 출력 방법.

- 2차원 배열의 선언, 초기화, 출력 방법.

 

1차원 배열이란?

Java뿐 아니라 모든 언어에서 1차원 배열이 존재하며 많은 분야에서 사용합니다.

1차원 배열은 같은 자료형의 묶음이라고 이해하면 좀더 쉽게 이해할 수 있을것입니다! 

 

1차원 배열의 선언및 활용은 아래와 같이 할 수있습니다.


1. 배열을 선언하는 방법

int[] array;
int []array;
int array[];

- 언 뜻 보면 같은것 같지만 해당 변수가 배열이라는 것을 알려주는 '[]'의 위치가 다르다는 것을 확인 할 수 있다. 

- 값을 모르고 초기화를 하지 않을 경우에 사용한다. 

 

2. 배열을 초기화 하는 방법

// 배열 선언!!
int[] array;

// 배열 초기화!!
array = new int[2];

- 1번에서 나왔던 배열을 선언 후 배열의 길이를 초기화 해주는 방법이다.

- 처음부터 배열의 길이를 모르고 있을 때 자주 사용하는 방법이다.

 

3. 선언과 동시에 초기화 하는 방법.

int[] array = new int[1];

 

- 이 방법은 1번의 3가지 방법으로 선언 가능하며 = new int[1]; 이부분만 동일하게 사용하면 된다. 

- 선언과 동시에 길이를 지정하는 방법이다.

- 선언된 길이만큼 배열에 값이 들어가게 되는데 int 의 경우 전부 0으로 초기화 된다!!!!

  (Ex. {0,0,0,0})

 

4. 선언과 동시에 값을 지정하는 방법

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

- 이 방법은 선언과 동시에 값을 지정 할 수 있다!

- 값을 위 와 같이 5개를 지정 했다면 해당 배열의 길이(size)는 5가 된다!

 

5. 배열 출력하는 방법

- 배열을 출력하는 방법은 Arrays.toString 을 사용하는 방법과

- for 문을 사용하는 경우 두가지가 있다! 

 

5-1) Arrays.toString 

// 배열선언
String[] array = {"one", "two", "three"};

// 출력! (Arrays.toString)
System.out.println(Arrays.toString(Arrays.toString(array));

- 배열을 String 값으로 반환하여 출력해주는 코드이다.! 

 

5-2) for문

// 배열 선언
int[] array = {0,1,2,3,4};

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

- 배열의 인덱스를 하나씩 돌면서 출력하는 방법이다. 

 


2차원 배열이란? 

2차원 배열이란 배열의 요소로 1차원 배열을 갖고 있는것을 뜻한다! 

사실 이렇게 글로 설명을 하면 이해하기가 쉽지 않을 것 이다. 

좀더 쉽게 말하면 2차원 배열의 1번 요소 = {1,2},   2번 요소 = {3,4} 가 있을 때

 

2차원 배열의 0번 인덱스는 1번요소, 1번 인덱스는 2번 요소가 들어가 있는것이다.

 

* 1차원 배열

1 2 3 4

 

* 2차원 배열

(0,0) (1,0) (2,0)
(0,1) (1,1) (2,1) 
(0,2) (1,2) (2,2)

- 쉽게 말하면 2차원 배열이 있을 때 array[3][3] 앞의 3은 x축, 뒤의 3은 y축 이라고 생각하면 된다. 

   

* 1차원은 선, 2차원은 면, 3차원은 공간을 나타내는 것 과 같다.


1. 2차원 배열 선언 방법

int[][] array;
int [][]array;
int[] array[];

- 1차원 배열 선언과 비슷 하지만 3번 예제를 보면 모양이 조금 신기 할 수 있다고 생각된다. 

   1. 해당 선언은 타입[] 변수명[]; 으로 구성되며 다른 선언 방법과 차이는 없다! 

 

2. 2차원 배열 초기화 방법

// 1번
int[][] array = new int[1][2];

// 2번
int [][] array;
array = new int[1][2];

- 2차원 배열의 초기화 방법은 1차원 배열의 초기화와 같다! 

 

* 가변배열이라는 것이 존재하는데 '열'의 길이를 명시 하지 않고 각 행마다 다른 길이로 초기화가 가능하다! 

 

3. 2차원 배열의 '가변 배열'(Dynamic Array)

// [row, col] - 일 때 col의 값이 없음.
int[][] array = new int[3][];

// 초기화
array[0] = new int[3];
array[1] = new int[2];
array[2] = new int[1];

// 값 set
array[0][1] = 1;
array[0][2] = 2;
array[1][1] = 1;
array[2][0] = 1;

- 2차원 배열의 2번째 값을 비워 놓으면 각 행마다 다른 값을 넣을 수 있다. 

- 또한 초기화 후 값을 따로 따로 지정 하는 방법도 존재한다. 

 

4. 2차원 배열에 값 직접 넣기

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

- 예시 코드와 같이 2차원 배열의 값을 직접 지정 가능하다

- 지정한 값에 따라 길이와 크기가 초기화 된다.

 

5. 2차원 배열 출력 

- 2차원 배열의 출력은 1차원 배열과 마찬가지로 2가지 방법이 있다 반복문, deepToString 

  1차원 배열과는 달리 Arrays.toString 을 사용할 수 없다. 

 

* 그 이유는 2차원 배열의 구조는 배열 내부에 배열이 또 존재하기 때문인데. 배열 자체는 Object 이기 때문에

  Object의 toString 을 하는것 이기 때문이다. 

        // 2차원 배열 선언.
        int[][] array2 = {
                {1,2,3},
                {4,5},
                {6,7,8,9}
        };

        // 1번 출력 - 직접 접근
        System.out.println(Arrays.toString(array2[1]));

        // 2번 출력 - 반복문 & Arrays.toString
        for(int i=0; i<array2.length; i++) {
            System.out.println(Arrays.toString(array2[i]));
        }

        // 3번 출력 - 반복문 (요소 하나하나 출력)
        for(int i=0; i<array2.length; i++) {
            for(int j=0; j<array2[i].length; j++){
                System.out.println(array2[i][j]);
            }
        }

        // 4번 출력 - deepToString(전체 출력)
        System.out.println(Arrays.deepToString(array2));

출력 하는 방식이나 접근 방식은 각자 상황에 따라 여러가지 방법을 사용하는것이 좋다! 

(나중일이지만 리소스 자체를 많이 안써도 되는 상황에 많이 사용할 수 있기 때문이다..)


배열은 컴퓨터 공학에서 가장 기본으로 사용되는 자료구조이며 관련 직종 및 공부하는 사람들은 필수로 알아야하고

잘 알아 두는것이 좋을것같다... 

 

수정 할 부분이나, 틀린 부분 등 피드백은 언제든 환영입니다! 댓글로 자유롭게 알려주세요! 

 

 

 

 

반응형

댓글