이 글에서는 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));
출력 하는 방식이나 접근 방식은 각자 상황에 따라 여러가지 방법을 사용하는것이 좋다!
(나중일이지만 리소스 자체를 많이 안써도 되는 상황에 많이 사용할 수 있기 때문이다..)
배열은 컴퓨터 공학에서 가장 기본으로 사용되는 자료구조이며 관련 직종 및 공부하는 사람들은 필수로 알아야하고
잘 알아 두는것이 좋을것같다...
수정 할 부분이나, 틀린 부분 등 피드백은 언제든 환영입니다! 댓글로 자유롭게 알려주세요!
'Language > Java' 카테고리의 다른 글
[Java] Lombok 실제 사용법(2) (0) | 2023.01.17 |
---|---|
[Java] LomBok이란? & 어노테이션 정리 (1) (0) | 2023.01.17 |
[Java] Stack 2개로 Queue 처럼 사용하기 (0) | 2023.01.13 |
[Java] DTO <-> Entity 변환(ModelMapper & method & ModelMapper List 바인딩) (0) | 2022.12.22 |
[Java] DAO, DTO, VO, Entity 란? (2) | 2022.12.22 |
댓글