자바에서 배열은 데이터를 효율적으로 저장하고 다루는 데 사용되는 중요한 데이터 구조 중 하나입니다.
이 글에서는 자바 배열의 기초 문법, 배열과 메모리 간의 관계에 대해 알아보겠습니다.
배열 (Arrays)
자바 배열은 동일한 데이터 유형의 여러 요소를 저장할 수 있는 고정 크기의 데이터 구조입니다.
배열 선언과 초기화
자바 배열을 선언하려면 데이터 타입을 지정하고 배열 변수 이름을 정의합니다. 배열을 초기화하려면 배열의 크기를 지정하고 값을 할당합니다. 정수 배열을 선언하고 초기화하는 방법은 다음과 같습니다.
- 배열의 선언과 초기화 : 데이터 타입 [] 변수명 = new 데이터 타입 [배열의 크기]
int[] numbers = new int[5]; // 크기가 5인 정수 배열 선언 및 초기화
배열 요소에 접근
배열의 각 요소에 접근하려면 인덱스를 사용합니다. 인덱스는 0부터 시작하며, 그렇기 때문에 배열 길이보다 작은 값을 가져야 합니다.
배열 요소에 접근하는 방법은 다음과 같습니다.
- 배열의 첫 번째 요소 접근: 배열명 [0]
- 배열의 마지막 요소 접근: 배열명 [배열의 크기 - 1]
int firstElement = numbers[0]; // 첫 번째 요소에 접근
int lastElement = numbers[4]; // 마지막 요소에 접근
배열 초기화 방법
자바에서 배열을 초기화하는 방법은 여러 가지가 있습니다. 직접 요소 값을 지정하여 할당하는 방법이 있고, 연속되는 값을 초기화할 경우는 반복문을 사용하여 배열을 초기화 할 수 있습니다.
- 직접 값 할당
int[] numbers = {1, 2, 3, 4, 5};
- 반복문을 사용하여 초기화
int[] numbers = new int[5];
for (int i = 0; i < 5; i++) {
numbers[i] = i + 1;
}
배열 길이
배열의 길이는 length 속성을 사용하여 얻을 수 있습니다. 길이는 배열이 포함하는 요소의 수를 나타냅니다.
int length = numbers.length; // 배열의 길이를 얻음
다차원 배열
자바는 다차원 배열도 지원합니다. 2차원 배열은 행과 열로 구성되며 메모리에 연속적으로 배치됩니다.
int[][] matrix = new int[3][3]; // 3x3 크기의 2차원 배열 선언
배열의 활용
배열은 데이터를 구조적으로 관리하고 빠르게 접근할 때 사용됩니다. 정렬, 검색, 필터링과 같은 다양한 연산에 활용할 수 있으며, 프로그램의 효율성을 높이는 데 중요한 역할을 합니다.
※ 배열 사용시 주의점
- 배열은 고정 크기이므로 크기를 동적으로 조절하기 어렵습니다.
▶ 이런 한계를 극복하기 위해 자바 컬렉션 프레임워크에서 리스트와 같은 동적 데이터 구조를 제공합니다.
- 배열 요소에는 동일한 데이터 유형만 저장할 수 있습니다.
- 배열 인덱스를 벗어난 접근은 ArrayIndexOutOfBoundsException을 발생시킵니다.
배열과 메모리
자바 배열은 연속적인 메모리 공간에 저장됩니다. 배열은 데이터 타입에 따라 일정한 크기의 메모리를 할당하며, 각 요소는 이 메모리에 연속적으로 위치합니다. 예를 들어, int 타입의 배열은 각각의 요소에 4바이트의 메모리를 할당합니다.
배열의 메모리 관리
자바 배열은 메모리를 효율적으로 사용하는 장점이 있지만, 크기가 고정되어 있어 동적으로 크기를 조정하기 어렵습니다. 이로 인해 배열의 메모리 관리에는 주의를 기울여야 합니다. 크기가 동적으로 변경되어야 하는 경우는 자바 컬렉션 프레임워크의 ArrayList 또는 LinkedList와 같은 동적 데이터 구조를 고려해야 합니다.
자바 배열은 데이터를 효율적으로 저장하고 접근하는 강력한 도구입니다. 배열은 연속적인 메모리에 데이터를 저장하기 때문에 빠른 접근 속도를 제공하며, 메모리 사용을 최적화합니다. 그러나 배열은 크기가 고정되어 있어 동적으로 메모리 크기를 조정하기 어렵기때문에 배열의 메모리를 효율적으로 활용하려면 주의가 필요합니다. 자바 배열과 메모리 간의 관계에 대한 이해를 토대로 데이터 요구 사항에 따라 배열과 자바 컬렉션 프레임워크를 조합하여 사용하는 것이 바람직하며, 적절한 데이터 구조를 선택하여 프로그래밍 한다면 더욱 효율적이고 성능 우수한 애플리케이션을 개발할 수 있습니다.
'# Coding > Java' 카테고리의 다른 글
| 자바 객체 지향 프로그래밍 (1) | 2023.09.14 |
|---|---|
| 자바 조건문 반복문 (0) | 2023.09.13 |
| 자바 특수 문자, 서식 문자, 연산자 (1) | 2023.09.11 |
| 자바 변수 기본자료형 (0) | 2023.09.11 |
| Web Service & Web Application (0) | 2021.10.04 |