본문 바로가기
Java/정리

[Java] 2차원 배열 & 가변배열

by 콧등치기국수 2021. 5. 6.

1. 2차원 배열 

: 자료형이 같은 1차원 배열의 묶음, 배열 안에 다른 배열 존재

자료형[][] 배열이름 = new 자료형[행크기][열크기];
자료형 배열이름[][] = new 자료형[행크기][열크기];
자료형[] 배열이름[] = new 자료형[행크기][열크기];

 

 

2. 메모리

출처: https://jwj1699.tistory.com/3

 

배열은 스택영역에 저장된 것과 같이 111번지를 참조한다.

 

힙영역에서 111번지에는 행의 개수만큼 공간이 존재한다.

그 공간들(즉 배열의 각 행)은 또 다시 주소값( 0x222, 0x333, 0x444 )을 가진다. 

 

각각의 주소값(0x222, 0x333, 0x444)에 실제로 데이터가 저장된다.

 

그러므로 실제 데이터를 얻고싶다면 Array[0]이 아닌 Array[0][0]으로 써야한다.

Array[0] : 0x111번지 

Array[0][0] : 실제 데이터

 

 

3. 배열 초기화

1) for문을 이용한 초기화

for(int i = 0; i< arr.length; i++) {                 //arr.length: 행의 길이
	for(int j = 0; j < arr[i].length; j++) {     //arr[i].length : 행의 열의 개수
    	arr[i][j] = j;
    }
}

 

2) 선언과 동시에 초기화

int[][] arr = {{1,2,3,4}, {5,6,7,8}}

arr[1][1] → 6

arr[0][3] → 4

 

 

 

4. 가변배열

: 행은 정해졌으나 각 행에 대한 열의 갯수가 정해지지 않은 상태

int[][] arr = new int[3][];         //열의크기는 적어주지 않아도 됨


arr[0] = new int[2];  //0행은 2열    각행마다 주소값 다르게 존재
arr[1] = new int[1];  //1행은 1열
arr[2] = new int[3];  //2행은 3열

* 값 초기화

1) 직접 입력 (위와 같이)

2) 중첩 for문

 

'Java > 정리' 카테고리의 다른 글

[Java] 배열복사  (0) 2021.05.11
[Java] Math.random()  (0) 2021.05.08
[Java] 배열  (0) 2021.05.05
[Java] 조건문_Continue, Break  (0) 2021.05.05
[Java] (int, character) & (String) 값 비교  (0) 2021.05.05