Backend
home

[Java] 배열

생성일
2024/06/23 10:26
태그
Algorithm
게시일
2025/01/22
최종 편집 일시
2025/04/15 04:35

배열(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)로 변환