배열(Array)
•
동일한 타입의 데이터를 여러 개 저장할 수 있는 고정된 크기의 자료구조
•
자바에서 배열은 객체(Object)
•
배열 변수는 참조 변수, 배열 객체는 heap 영역에 저장됨
•
데이터를 일련의 메모리 위치에 저장
•
각 데이터에 대한 인덱스(Index)를 사용하여 접근
•
배열의 크기를 변경할 수 없음
선언 방법
1. 선언과 동시에 크기를 지정
int[] numbers = new int[10];// 배열 객체를 생성하고, 참조값을 변수에 저장한다.
Java
복사
2. 크기를 지정하지 않고 선언
int[] numbers;
numbers = new int[]{1, 2, 3, 4, 5};
Java
복사
배열 요소의 타입
자바에서 배열 선언 시, 배열 요소의 타입과 크기를 지정해야 함. 배열 요소 타입은 자바의 모든 데이터 타입(int, double, char, String)일 수 있으며, 요소 타입은 모두 같아야 함
// int형 요소 5개를 저장하는 배열
int[] numbers = new int[5];
// double형 요소 10개를 저장하는 배열
double[] prices = new double[10];
// String형 요소 3개를 저장하는 배열
String[] names = new String[3];
Java
복사
다차원 배열
배열은 다차원 배열로 선언할 수도 있다.
int[][] matrix = new int[3][3]; // 3 x 3 크기의 2차원 배열
int[][][] cube = new int[3][3][3]; // 3 x 3 x 3 크기의 3차원 배열
Java
복사
인덱스(Index)
배열의 각 요소에 접근하려면 인덱스를 사용해야 한다.
인덱스는 0부터 시작하며, 배열의 마지막 인덱스는 '배열의 길이 - 1' 이다.
배열의 길이보다 큰 값을 인덱스로 사용하면 ArrayIndexOutOfBoundsException 예외가 발생한다.
int[] numbers = new int[]{1, 2, 3, 4, 5};
// 배열의 요소에 액세스
int firstNumber = numbers[0]; // 1
int secondNumber = numbers[1]; // 2
// 배열의 요소에 값 할당
numbers[2] = 6; // {1, 2, 6, 4, 5}
// 다음과 같이 반복문을 사용하여 배열의 모든 요소를 참조할 수 있다.
for (int i = 0; i < numbers.length; i++) {
int number = numbers[i];
System.out.println(number);
}
Java
복사
배열의 특징
•
메모리 관리
◦
배열은 연속된 메모리 공간에 요소를 저장하기 때문에, 요소에 대한 메모리 관리가 용이하다.
•
크기 변경 불가능
◦
배열은 한 번 생성된 후 크기를 변경할 수 없다. 크기를 변경해야 하는 경우, 새로운 배열을 생성하여 이전 배열의 요소를 복사해야 한다.
•
메모리 낭비
◦
배열은 고정된 크기를 가지기 때문에, 요소의 개수가 많지 않은 경우에는 메모리 낭비가 발생할 수 있다.
•
요소의 삽입, 삭제가 비효율적
◦
배열은 요소의 삽입, 삭제가 비효율적이다. 삽입 또는 삭제 작업 후 요소의 인덱스를 업데이트해야 하므로, 이 작업이 많아지면 성능이 저하될 수 있다.
ArrayList
•
Arrays.sort(array): 배열의 요소를 오름차순으로 정렬
•
Arrays.binarySearch(array, value): 정렬된 배열에서 저장된 값의 인덱스를 찾음
•
Arrays.fill(array, value): 배열의 모든 요소를 지정된 값으로 채움
•
Arrays.copyOf(array, length): 배열을 지정된 길이로 복사
•
Arrays.equals(array1, array2): 두 배열이 같은지 확인
•
Arrays.deepEquals(array1, array2): 다차원 배열 비교
•
Arrays.asList(array): 배열을 리스트(list)로 변환