Codemental

[Java][자료구조] 배열(Array) 및 이차원배열(2dArray)의 개념 및 특징, 사용방법 본문

Java/자료구조

[Java][자료구조] 배열(Array) 및 이차원배열(2dArray)의 개념 및 특징, 사용방법

s.a 2022. 7. 4. 15:51
반응형

배열의 개념

일반적인 배열은 아래와 같이 같은 자료형의 값들의 묶음으로, 변수의 집합이다.

int[] array = { 1, 3, 5, 7, 9 };
String [] week = { "월", "화", "수", "목", "금", "토", "일" };

 

배열의 특징

1. 배열의 길이는 고정되어있다. (한번 생성하면 배열의 길이는 변경이 불가하다.)

2. 같은 자료형의 값만으로 이루어져있다. (나중에 자료형의 변경이 불가하다.)

3. 인덱스는 0부터 시작한다.

4. 배열의 값(요소)은 인덱스로 접근한다. 

5. 정의할 때는 "자료형 []"를 사용하고, 값을 초기화할 때는 중괄호를 사용한다. ex) { 값1, 값2, 값3...} 

6. 데이터를 삽입, 삭제는 속도가 느리지만 출력은 속도가 빠르다.

 

배열 생성 방법

1. 생성과 동시에 초기화

int nums = { 1, 2, 3, 4, 5 };

2. 배열을 생성 후 값 삽입

int nums = new int[5]; 
// 5개 : 0번 ~ 4번방까지 값을 넣을 수 있다.
// 5번째 방을 호출하면 ArrayOutOfIndex 에러가 발생한다.

nums[0] = 1;
nums[1] = 2;
nums[2] = 3;
nums[3] = 4;
nums[4] = 5;

System.out.println(nums); // { 1, 2, 3, 4, 5 }

 

배열의 복사

1. 얕은복사

2. 깊은복사

 


이차원 배열의 개념

이차원 배열이란, 여러개의 배열을 가지고 있는 배열이다.

이때 주의할 점은 2차원 배열은 전부 자료형이 같은 배열만을 담을 수 있다.

(서로 다른 자료형의 배열을 하나의 배열 안에 담을 수 없다.)

int[] row1 = { 1, 2, 3 };
int[] row2 = { 4, 5, 6 };
int[] row3 = { 7, 8, 9 };

int [][] twoDArray = {
                     row1,
                     row2,
                     row3
                     };

 

이차원 배열 생성 방법

1. 배열을 생성 후 값을 채워 넣는 방법

int[][] intArray = new int[3][3]; 
			// 아래처럼 이차원배열을 인덱스로 접근하여 값을 넣기 위해서는 
			// 뒷자리 크기도 정해져야 호출할 수 있음. new int[3][] => NullPointerException 
intArray[0][0] = 1;
intArray[0][1] = 6;
intArray[0][2] = 7;
intArray[1][0] = 2;
intArray[1][1] = 5;
intArray[1][2] = 8;
intArray[2][0] = 3;
intArray[2][1] = 4;
intArray[2][2] = 9;

2. 생성과 동시에 값을 채우는 방법

int[][] intArray = {
			{1, 6, 7},
			{2, 5, 8},
			{3, 4, 9}
		   };

3. 이차원 배열에 들어갈 배열을 만든 뒤, 2차원 배열에 값을 넣어주는 방법

int[] row1 = { 1, 2, 3 };
int[] row2 = { 4, 5, 6 };
int[] row3 = { 7, 8, 9 };

int [][] twoDArray = {
                     row1,
                     row2,
                     row3
                     };

4. 이차원 배열에 들어가는 배열의 크기가 다를때, 크기를 먼저 할당하는 방법

int[ ][ ] grid = new int[3][ ];

grid[0] = new int[1];
grid[1] = new int[2];
grid[2] = new int[7];