14. Arrays
배열(Arrays)
- 배열은 하나의 변수 안에 여러 개의 값을 저장할때 사용됩니다.
- 기본적 배열 선언은 변수타입과 대괄호( ‘[ ]’ )입니다.
String[] cars;
- 하지만 다음과 같이도 배열을 선언을 할 수 있습니다.
String cars[];
- 배열에 값은 선언과 동시에 넣을 수 있습니다.
String[] cars = {"Volvo", "BMW", "Ford", "Mazda"};
- 또는 선언 후에 넣을 수도 잇습니다.
String[] cars; cars = new String[4]; // cars에는 4개의 값만 넣을 수 있도록 선언 cars[0] = "Volvo"; cars[1] = "BMW"; cars[2] = "Ford"; cars[3] = "Mazda";
- 배열은 항상 0부터 시작합니다
배열에 있는 요소 사용하기
- 배열에 있는 요소는 인덱스 번호를 통해 사용할 수 있습니다.
String[] cars = {"Volvo", "BMW", "Ford", "Mazda"}; System.out.println(cars[0]); // 출력: Volvo
배열 요소 바꾸기
- 배열 안에 있는 요소 또한 인덱스 번호를 통해 바꿀 수 있습니다.
String[] cars = {"Volvo", "BMW", "Ford", "Mazda"}; cars[0] = "Opel"; System.out.println(cars[0]); // 출력: Opel
배열 길이
- 배열은 하나의 객체임으로 메소드를 포함하고 있습니다. 그중에 길이를 알려주는 메소드를 사용해보겠습니다.
String[] cars = {"Volvo", "BMW", "Ford", "Mazda"}; System.out.println(cars.length); // 출력: 4
배열 루프
for문
- 예시
String[] cars = {"Volvo", "BMW", "Ford", "Mazda"}; for (int i=0; i<cars.length; i++){ System.out.println(cars[i]); }
for-each문
- 예시
String[] cars = {"Volvo", "BMW", "Ford", "Mazda"}; for (String i : cars) { System.out.println(i); }
while문
- 예시
String[] cars = {"Volvo", "BMW", "Ford", "Mazda"}; while(i < cars.length) { System.out.println(cars[i]); i++; }
- 배열을 선언 후에 while문 또는 for문을 사용할 때에는 꼭 배열 인덱스 번호에 신경을 써야합니다. 만약 부여된 인덱스 번호를 초과할 경우 NullPointerException 에러가 발생됩니다.
다차원 배열
- 다차원 배열은 배열 안에 하나 이상의 배열을 담고 있는 배열을 뜻합니다.
-
차원에 따라서 대괄호를 추가해주시면 됩니다.
- 예시
int[][] dimension2 = { {1, 2, 3, 4}, {5, 6, 7} }; int[][][] dimension3 = { {1, 2, 3, 4}, {5, 6, 7}, {8, 9, 10, 11} };
- 2차원을 초과하여 사용하는 일은 거의 없습니다. 고로 2차원을 위주로 다루겠습니다.
- 방금 선언한 2차원 배열에서 7을 출력하기 위한 코드는 이러합니다.
int[][] dimension2 = { {1, 2, 3, 4}, {5, 6, 7} }; int z = dimension2[1][2]; System.out.println(z); // 출력: 7
- 쉽게 생각하기 위해서 2차원 배열을 표로 만들면 이러합니다.
인덱스 번호 | 0 | 1 | 2 | 3 |
0 | 1 | 2 | 3 | 4 |
1 | 5 | 6 | 7 | Null |
- 포문을 통해 2차원 배열을 전체 출력해보겠습니다.
int[][] dimension2 = { {1, 2, 3, 4}, {5, 6, 7} }; for (int i=0; i<dimension2.length; i++) { for (int j=0; j<dimension2[i].length; j++) { System.out.println(dimension2[i][j]); } }
- 후에 2차원 배열을 통해 각종 모양을 출력해보는 연습을 해보시면 좋겠습니다.
- 예시
for (int i=0; i<5; i++) { for (int j=0; j<i; j++) { System.out.print("*"); } System.out.println(""); }
- println와 print의 차이점 또한 구글을 통해 찾아보시면 좋을거같습니다. 후에 printf 라는 것에 대해서도 다루겠습니다.