동적가변배열
동적가변배열이 아닌 일반 배열은 처음부터 배열의 길이를 초기화해서 만들어 사용한다.
반면에 동적가변배열은 배열의 길이를 동적으로, 필요시에 생성한다.
즉, 동적가변배열은 필요시에 필요한 만큼 만들어서 사용하는 배열이다.
다음과 같이 []안을 비워두고 선언하여 동적가변배열을 생성할 수 있다.
int[][] arr = new int[3][]
예제 01. 길이가 1씩 증가하는 동적가변배열
package may31;
import java.util.Arrays;
public class DynamicArray {
public static void main(String[] args) {
int[] arr = new int[3];
int[][] arr01 = new int[3][3];
char[][] arr02 = new char[3][]; //내부를 비워두었을 때 - null
for (char[] cs : arr02) {
System.out.println(Arrays.toString(cs)); // null
}
arr02 = new char[3][0]; //내부에 0을 넣었을 때 - []
for (char[] cs : arr02) {
System.out.println(Arrays.toString(cs)); // [0]
}
for (int i = 0; i < arr02.length; i++) {
arr02[i] = new char[i + 1]; // 행 번호만큼 방 만들기
for (int j = 0; j < arr02[i].length; j++) { // 방에는 A, B, C... 넣기
arr02[i][j] = (char)(65 + i + j);
}
}
for (char[] cs : arr02) {
System.out.println(Arrays.toString(cs));
}
}
}
출력결과
null
null
null
[]
[]
[]
[A]
[B, C]
[C, D, E]
예제02. 랜덤한 길이의 동적가변배열
- 5개의 집, 각 집에는 몇 개의 방이 있는 지는 정하지 않고 생성
- 각각의 집을 돌며 1~5개 사이의 방을 만들어 주고 출력
package may31;
import java.util.Arrays;
//동적가변배열
public class DynamicArray02 {
public static void main(String[] args) {
//5개의 집, 각 집에는 몇 개의 방이 있는 지는 정하지 않았다. (동적가변배열)
int[][] arr01 = new int[5][];
//각 집을 돌면서 랜덤한 갯수로 방 만들어 주기
for (int i = 0; i < arr01.length; i++) {
arr01[i] = new int[(int)(Math.random() * 5 + 1)]; // 1 ~ 5 사이의 방 갯수(랜덤)
}
//출력
for (int[] is : arr01) {
System.out.println(Arrays.toString(is));
}
}
}
'BackEnd > Java' 카테고리의 다른 글
[Java] 오버라이드, 오버로드 (0) | 2021.07.01 |
---|---|
[Java] 객체지향프로그래밍 OOP* (0) | 2021.07.01 |
[Java] 날짜 형식 Date Format (0) | 2021.07.01 |
[Java] 문자(Character), 문자열(String) (0) | 2021.07.01 |
[Java] 다차원 배열 Multi Array (0) | 2021.07.01 |
댓글