목차
- 배열이란?
- 2차원 배열은 아파트다.
- 2차원 배열 생성 및 출력
핵심
배열은 여러 개의 변수를 쉽게 이동시키기 위한 자료형이다
배열이란?
만약 정수 5개를 사용해야 한다면 int 변수를 5개를 만들어야 한다. 그런데 이 변수들을 이동시켜야 하는 상황이 발생할 수 있다. 예) 메서드에 인자로 들어갈 때
그럼 이 5개 변수를 하나 하나씩 옮겨야 한다. 이런 불편함을 줄이기 위해 배열을 쓸 수 있다.
배열은 여러 개의 기억공간이 하나로 합쳐진 구조이다. 같은 자료형만 사용할 수 있다. 아까 말한 5개의 정수도 하나의 배열에 넣어두면 이 배열 하나만 들고 다니면 된다.장바구니에 들어간 과일들처럼
여러 개의 변수가 모여있다고 하니 객체랑 비슷하지 않은가? 전에 객체를 덩어리라고 표현했다. 그럼 객체처럼 배열을 담는 변수는 배열을 담고 있는 게 아니라 배열의 주소를 담고 있다. 객체와의 차이점은 다른 자료형은 담을 수 없다는 점. 상황에 따라서 단점일 수도, 장점일 수도
int[] array; // 배열 선언, 메모리에 배열을 담을 수 있는 기억공간이 만들어짐
array = new int[3]; // 배열 객체 생성. 객체 주소를 array에 담는다.
2차원 배열은 아파트다.
2차원 배열은 아파트다. 보통 2차원 배열을 어려워 한다.내 이야기..
아파트에는 동이 있고, 동에는 층이 있다.
int[][] a = new int[3][4] // 3개 동이 있고 각 동에는 4개 층이 있다.
맨 처음 a에 담긴 배열의 주소는 int [3]의 주소이다. 그래서 a.length()하면 3이 나온다.
- int[0]이 int[4]의 주소를,
- int[1]이 int[4]의 주소를,
- int[2]이 int[4]의 주소를,
- int[3]이 int[4]의 주소를 가지고 있다.
a가 2차원 배열의 주소를 한 번에 가지고 있지 않다는 말!
그래서 행을 아파트의 동, 열을 아파트 동의 층 수라고 표현했다.
가변 배열
행의 길이만 지정하고 열의 길이는 따로 지정할 수 있다. 왜냐? 각 행이 그 열의 주소를 가지고 있기 때문이다.
int[][] arr = new int[3][]; // 3행만 지정
arr[0] = new int[4]; // 0동에 4층 생성
arr[1] = new int[5]; // 1동에 5층 생성
arr[2] = new int[6]; // 2동에 6층 생성
2차원 배열 생성 및 출력
2차원 배열이 메모리에서 어떻게 구조를 이루는지 알고 있으면 생성이 어렵지 않다.
// Two Dimentional array
int[][] arr = new int[5][4];
int element;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
element = arr[i][j];
element = 4;
System.out.printf("%d\t", element);
}
System.out.println();
}
String[][] arr = new String[4][];
// Create variable array
for (int i = 0; i < arr.length; i++){
arr[i] = new String[i+1];
}
// Assign value and print elements
for (int i = 0; i < arr.length; i++){
for (int j = 0; j < arr[i].length; j++){
arr[i][j] = "*";
System.out.printf("%s", arr[i][j]);
}
System.out.println();
}
'프로그래밍 > Java' 카테고리의 다른 글
19.12.22) Java - class, object, instance의 차이 (0) | 2019.12.23 |
---|---|
19.12.19) Java - Calendar 프로젝트 (0) | 2019.12.20 |
19.12.19) Java - 기본 자료형과 객체 자료형 (0) | 2019.12.20 |
19.12.19) Java - 변수와 메서드 (0) | 2019.12.20 |
19.12.18) Java - Calendar 프로젝트 (0) | 2019.12.19 |