[JAVA/자바] 배열 리펙토링
변수 값 사용
package array;
public class Array1Ref2 {
public static void main(String[] args) {
int[] students; // 배열 변수 선언
students = new int[5]; // 배열 생성
// 변수 값 대입
students[0] = 90;
students[1] = 80;
students[2] = 70;
students[3] = 60;
students[4] = 50;
// 변수 값 사용
for (int i = 0; i < students.length; i++) {
System.out.println("학생" + (i + 1) + " 점수: " + students[i]);
}
}
}
- 반복문을 사용해서 배열을 통해 값을 사용하는 부분을 효과적으로 변경했다.
- 배열의 인덱스는 0부터 시작하기 때문에 반복문에서 i = 0을 초기값으로 사용했다.
- students.length
* 배열의 길이를 제공하는 특별한 기능이다.
* 참고로 이 값은 조회만 할 수 있다. 대입은 할 수는 없다.
* 현재 배열의 크기가 5이기 때문에 여기서는 5가 출력된다.
- for문의 조건이 i < students.length이기 때문에 i는 0, 1, 2, 3, 4까지만 반복한다.
* i가 5가 되면 5 < 5가 되면서 조건이 거짓이 되고, 반복을 종료한다.
초기화
package array;
public class Array1Ref4 {
public static void main(String[] args) {
// 배열 생성 간략 버전, 배열 선언과 함께 사용시 new int[] 생략 가능
int[] students = {90, 80, 70, 60, 50}; // 배열 생성과 초기화
// 변수 값 사용
for (int i = 0; i < students.length; i++) {
System.out.println("학생" + (i + 1) + " 점수: " + students[i]);
}
}
}
- 배열은 { }를 사용해서 생성과 동시에 편리하게 초기화하는 기능을 제공한다.
단 이때는 배열 변수의 선언을 한 줄에 함께 사용할 때만 가능하다.
- 이제 학생의 점수를 추가해도 {90, 80, 70, 60, 50}의 내용만 변경하면 된다.
그러면 나머지 코드는 변경하지 않아도 된다.
2차원 배열
행 출력 반복
package array;
public class ArrayDi1 {
public static void main(String[] args) {
// 2x3 2차원 배열을 만든다.
int[][] arr = new int[2][3]; // 행 2, 열 3
arr[0][0] =1; // 0행, 0열
arr[0][1] =2; // 0행, 1열
arr[0][2] =3; // 0행, 2열
arr[1][0] =4; // 1행, 0열
arr[1][1] =5; // 1행, 1열
arr[1][2] =6; // 1행, 2열
for (int row = 0; row < 2; row++) {
System.out.print(arr[row][0] + " "); // 0열 출력
System.out.print(arr[row][1] + " "); // 1열 출력
System.out.print(arr[row][2] + " "); // 2열 출력
System.out.println(); // 한 행이 끝나면 라인을 변경한다.
}
}
}
- for문을 통해서 행(row)을 반복해서 접근한다. 각 행 안에서 열(column)이 3개이므로
arr[row][0], arr[row][1], arr[row][2] 3번 출력한다. 이렇게 하면 for문을 한번 도는 동안 3개의 열을 출력할 수 있다.
열 출력 반복
package array;
public class ArrayDi2 {
public static void main(String[] args) {
// 2x3 2차원 배열을 만든다.
int[][] arr = new int[2][3]; // 행 2, 열 3
arr[0][0] =1; // 0행, 0열
arr[0][1] =2; // 0행, 1열
arr[0][2] =3; // 0행, 2열
arr[1][0] =4; // 1행, 0열
arr[1][1] =5; // 1행, 1열
arr[1][2] =6; // 1행, 2열
for (int row = 0; row < 2; row++) {
for (int column = 0; column < 3; column++) {
System.out.print(arr[row][column] + " ");
}
System.out.println(); // 한 행이 끝나면 라인을 변경한다.
}
}
}
- for문을 2번 중첩해서 사용하는데, 첫 번째 for문은 행을 탐색하고, 내부에 있는 두 번째 for문은 열을 탐색한다.
초기화, 배열의 길이
package array;
public class ArrayDi4 {
public static void main(String[] args) {
// 2x3 2차원 배열, 초기화
int[][] arr = {
{1, 2, 3},
{4, 5, 6}
};
// 2차원 배열의 길이를 활용
for (int row = 0; row < arr.length; row++) {
for (int column = 0; column < arr[row].length; column++) {
System.out.print(arr[row][column] + " ");
}
System.out.println(); // 한 행이 끝나면 라인을 변경한다.
}
}
}
- 기존 배열처럼 2차원 배열도 편리하게 초기화할 수 있다.
- for문에서 2차원 배열의 길이를 활용했다.
* arr.length는 행의 길이는 뜻한다.
* arr[row].length는 열의 길이를 뜻한다.
값 입력
package array;
public class ArrayDi4 {
public static void main(String[] args) {
// 2x3 2차원 배열, 초기화
int[][] arr = new int[2][3];
int i = 1;
// 순서대로 1씩 증가하는 값을 입력한다.
for (int row = 0; row < arr.length; row++) {
for (int column = 0; column < arr[row].length; column++) {
arr[row][column] = i++;
}
}
// 2차원 배열의 길이를 활용
for (int row = 0; row < arr.length; row++) {
for (int column = 0; column < arr[row].length; column++) {
System.out.print(arr[row][column] + " ");
}
System.out.println(); // 한 행이 끝나면 라인을 변경한다.
}
}
}
- 중첩된 for문을 사용해서 값을 순서대로 입력한다.
- arr[row][column] = i++ 후의 증감 연산자(++)를 사용해서 값을 먼저 대입한 다음에 증가한다.
* 코드에서 int i = 1으로 i가 1부터 시작한다.