int[] students; // 1. 배열 변수 선언
students = new int[5]; // 2. 배열 생성
1. 배열 변수 선언
int[] students; 는 배열 변수를 선언하는 방법입니다. 일반 변수와의 차이점은 int 타입 뒤에 대괄호 [] 가 들어간다는 점입니다. 이 선언으로 배열이 실제로 만들어지는 것은 아니며, 배열을 담을 수 있는 변수를 만드는 것입니다.
2. 배열 생성
배열 변수를 선언한 후, new int[5]; 구문으로 실제 배열을 생성합니다. 여기서 int[5] 는 int 타입의 변수를 5개 만들겠다는 의미입니다. 즉, 5개의 int 변수를 연속으로 생성하여 하나의 배열로 관리할 수 있게 됩니다.
배열의 특징
배열은 같은 타입의 데이터를 묶어 관리하기 때문에 데이터 개수가 많아질수록 유용합니다. 그리고 인덱스를 사용하여 각 요소에 접근할 수 있기 때문에 데이터의 위치에 따라 빠르게 접근이 가능합니다.
students[0] = 90; // 학생1 점수 대입
students[1] = 80; // 학생2 점수 대입
System.out.println("학생1 점수: " + students[0]);
System.out.println("학생2 점수: " + students[1]);
배열의 인덱스
배열은 0부터 시작합니다. 따라서 students[4] 는 배열의 마지막 요소가 됩니다. 예를 들어 students[5] 와 같이 배열 범위를 넘어서는 인덱스를 사용하면 ArrayIndexOutOfBoundsException 오류가 발생합니다.
기본형과 참조형의 차이
자바의 데이터 타입은 크게 기본형(Primitive Type) 과 참조형(Reference Type) 으로 나뉩니다.
- 기본형: int, double, boolean 등으로, 값 자체를 저장합니다.
- 참조형: 배열이나 객체로, 값이 저장된 메모리 주소(참조값)를 저장합니다.
배열은 참조형에 속하기 때문에 참조값을 통해 배열의 위치에 접근하게 됩니다.
Java 배열 리팩토링은 코드의 가독성, 재사용성, 유지보수를 용이하게 만드는 데 중요한 역할을 합니다. 아래의 예제에서 여러 단계를 거쳐 코드의 효율성을 높였습니다.
3. 기본 배열 선언 및 사용
int[] students = {90, 80, 70, 60, 50};
for (int i = 0; i < students.length; i++) {
System.out.println("학생" + (i + 1) + " 점수: " + students[i]);
}
위 코드에서는 for문을 통해 반복적으로 배열의 값을 출력합니다. students.length를 사용하여 배열의 크기를 유연하게 관리할 수 있어 배열이 길어져도 코드 수정 없이 작동합니다.
4. 2차원 배열 - 기본 선언 및 사용
2차원 배열은 행(row)과 열(column)로 구성되며, 다음과 같이 선언하고 사용할 수 있습니다:
int[][] arr = new int[2][3]; // 2x3 2차원 배열
arr[0][0] = 1;
arr[0][1] = 2;
arr[0][2] = 3;
arr[1][0] = 4;
arr[1][1] = 5;
arr[1][2] = 6;
이 코드는 각 배열 위치에 직접 값을 넣습니다. 반복문을 사용하지 않고 모든 값을 하나씩 설정해야 하므로 비효율적입니다.
5. 2차원 배열 리팩토링 - 행 출력 반복
for문을 사용하여 반복적으로 행을 출력합니다.
for (int row = 0; row < arr.length; row++) {
System.out.print(arr[row][0] + " ");
System.out.print(arr[row][1] + " ");
System.out.print(arr[row][2] + " ");
System.out.println(); // 행이 끝나면 줄바꿈
}
6. 2차원 배열 리팩토링 - 열 출력 반복 추가
열 출력 또한 for문을 사용해 효율성을 높입니다.
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();
}
이제 행과 열을 모두 반복문으로 처리하여 코드가 간결해졌고, 배열 크기가 변경되더라도 수정할 필요 없이 유연하게 동작합니다.
실행 결과
1 2 3
4 5 6
이와 같이 리팩토링을 통해 코드의 유지보수성과 가독성을 크게 개선할 수 있으며, 다른 배열 크기에도 쉽게 적용할 수 있습니다.
마무리하며: 배열의 장점
배열을 사용하면 메모리를 효율적으로 사용하고, 코드의 가독성과 관리성을 높일 수 있습니다. 특히 데이터가 많아질수록 배열을 통해 반복적인 작업을 줄일 수 있으며, 배열의 동적 할당 기능 덕분에 배열 크기를 상황에 맞게 조절할 수도 있습니다.
배열을 활용하는 방법을 이해했다면, 앞으로 다룰 더 복잡한 데이터 구조나 객체 지향 프로그래밍에서도 배열을 유연하게 활용할 수 있을 것입니다.
'Back-End > Java' 카테고리의 다른 글
자바 메서드 호출과 값 복사 그리고 오버로딩 (0) | 2024.10.29 |
---|---|
Java 메서드로 중복 코드 간편하게 관리하기 (1) | 2024.10.28 |
자바에서 Scanner 클래스를 활용한 사용자 입력 받기 (0) | 2024.10.24 |
자바의 형변환(Casting) 이해하기 (0) | 2024.10.22 |
지역 변수와 스코프 (0) | 2024.10.21 |