배열은 같은 자료형의 값 여러 개를 저장하는 연속된 공간이다. 즉 각 값마다 선언을 하는 것이 아닌 배열로 만들어 좀 더 손쉽게 다룰 수 있다.
배열 선언 첫 번째 방법
String[] coffees = new String[4]; // 크기 4인 string 배열
두 번째 방법
String coffees[] = new String[4];
coffees[0] = "아메리카노"; // 0부터 시작
coffees[1] = "카페모카";
coffees[2] = "라떼";
coffees[3] = "카푸치노";
사실 첫 번째와 두 번쨰 방법은 기능적으로 동일하고 스타일 마다 쓰는 방식이 나뉘어진다. 차이점은 [] 배열 표시를 타입 뒤에 하나 변수 뒤에 하나의 차이이다.
세 번째 방법
String[] coffees = new String[] {"아메리카노", "카페모카", "라떼", "카푸치노"};
네 번째 방법
String[] coffees = {"아메리카노", "카페모카", "라떼", "카푸치노"};
마찬가지로 둘 다 기능적으로는 같으나, 네 번째 방법이 더 간단하고 보기 편한 방법이다.
System.out.println(coffees[0] + "하나"); // 아메리카노 하나
System.out.println(coffees[1] + "하나"); // 카페모카 하나
coffees[2] = "에스프레소"; // 배열 값 변경
System.out.println(coffees[2] + "하나");
System.out.println(coffees[3] + "하나");
System.out.println("주세요");
배열의 index를 활용하여 출력도 가능하며 index를 활용하여서도 값을 변경 가능하다.
- 배열의 순회 -
// 배열의 순회
String[] coffees = {"아메리카노", "카페모카", "라떼", "카푸치노"};
// for 반복문 순회
for (int i = 0; i < 4; i++) {
System.out.println(coffees[i] + "하나");
}
System.out.println("주세요");
System.out.println("----------------------");
// 배열의 길이를 이용한 순회
for (int i = 0; i < coffees.length; i++) {
System.out.println(coffees[i] + "하나");
}
System.out.println("주세요");
System.out.println("--------------------");
// enhanced for (for-each) 반복문
for (String coffee : // 임의로 선언한 변수에 배열 값 모두를 돌리는 것
coffees) {
System.out.println(coffee + "하나 주세요");
}
for 반복문 순회:
for (int i = 0; i < 4; i++): 배열의 길이를 알고 있을 때, 배열의 인덱스를 직접 사용하여 반복합니다
System.out.println(coffees[i] + "하나") : 배열의 각 요소를 출력합니다. 이 방법은 배열의 길이를 알고 있어야 하고 배열의 인덱스를 사용합니다.
배열의 길이를 이용한 순회:
for (int i = 0; i < coffees.length; i++): 배열의 길이(length)를 이용하여 배열을 순회합니다. 배열의 길이를 알고 있을 때 유용
System.out.println(coffees[i] + "하나");: 배열의 각 요소를 출력합니다.
enhanced for (for-each) 반복문:
for (String coffee : coffees): 향상된 for문 또는 for-each 문을 사용하여 배열을 순회합니다. 배열의 요소를 직접 접근하는 것이 아니라 배열 전체를 순회하면서 각 요소에 접근합니다. System.out.println(coffee + "하나 주세요");: 배열의 각 요소를 출력합니다. 이 방법은 배열의 길이를 알 필요가 없으며 더 간결하게 배열을 순회할 수 있습니다.
for (임의의 변수명 : 컬렉션 또는 배열) {
// 처리할 코드
}
- 다차원 배열, 순회-
String[] seatA = {"A1", "A2", "A3", "A4", "A5"};
String[] seatB = {"B1", "B2", "B3", "B4", "B5"};
String[] seatC = {"C1", "C2", "C3", "C4", "C5"};
이렇게 영화관 좌석이 있을 경우 A, B, C로 3개의 배열을 생성한다. 하지만 배열의 수가 많아지면 코드가 복잡해질 뿐만 아니라 헷갈리기 까지 한다. 그래서 이를 한 번에 다루기 위해 다차원 배열을 사용한다.
// 3 x 5 크기의 2차원 배열
String[][] seats = {
{"A1", "A2", "A3", "A4", "A5"},
{"B1", "B2", "B3", "B4", "B5"},
{"C1", "C2", "C3", "C4", "C5"},
};
//B2에 접근하려면?
System.out.println(seats[1][1]);
//C5에 접근하려면?
System.out.println(seats[2][4]);
다차원 배열일 경우 대괄호 표시를 2번으로 표시하고, 대괄호에 인덱스를 넣어 찾고자 하는 값을 가로 세로 값을 계산하여찾는다. 이러한 다차원 배열을 순회하는 법을 알아보겠다.
// 다차원 배열 순회
String[][] seats = {
{"A1", "A2", "A3", "A4", "A5"},
{"B1", "B2", "B3", "B4", "B5"},
{"C1", "C2", "C3", "C4", "C5"}
};
for (int i = 0; i < 3; i++) { // 이중 배열의 세로 기준
for (int j = 0; j < 5; j++) { // 이중 배열의 가로 기준
System.out.print(seats[i][j] + " ");
}
System.out.println();
}
이전에 별 도형을 만들었다시피, 가로 세로를 계산하여 for 반복문을 이용해 순회 돌릴 수 있다.
String[][] seats2 = {
{"A1", "A2", "A3"},
{"B1", "B2", "B3", "B4"},
{"C1", "C2", "C3", "C4", "C5"}
};
for (int i = 0; i < seats2.length; i++) { // 세로: 이중 배열 안 배열 갯수
for (int j = 0; j < seats2[i].length; j++) { // 가로: 이중 배열의 세로 i의 증강에 따른 length
System.out.print(seats2[i][j] + " ");
}
System.out.println();
}
바깥족 for 반복문은 중괄호 안에 있는 배열의 갯수를 나타내고 이는 이중 배열의 행 갯수를 반복한다. 안쪽 반복문은 현재 열(i)에 속한 좌석의 수만큼 반복한다. 각 열은 이중 배열에서 특정 행을 나타내며, 안쪽 반복문은 현재 열의 좌석 수를 나타내는 seats2[i].length를 통해 동작한다.
// 세로 크기 10 x 가로 크기 15에 해당하는 영화관 좌석
String[][] seats3 = new String[10][15];
String[] eng = {"A","B","C","D","E","F","G","H","I","J"};
for (int i = 0; i < seats3.length; i++) {
for (int j = 0; j < seats3[i].length; j++) {
seats3[i][j] = eng[i] + (j + 1);
}
}
마찬가지로 바깥쪽 for문은 세로 행의 갯수를 세며 안쪽 for 문은 해당 행의 length를 통해 크기를 알아내어 반복한다.
'Java' 카테고리의 다른 글
| Java (클래스) (2) | 2024.01.02 |
|---|---|
| Java (메서드) (2) | 2024.01.02 |
| Java (이중 반복문) (0) | 2023.12.31 |
| Java (각 반복문 종류와 응용) (0) | 2023.12.31 |
| Java (문자열 메서드 및 이스케이프 문자) (0) | 2023.12.30 |