MODE::CREATIVE

[JAVA] 자바의 배열(Array) 본문

JAVA

[JAVA] 자바의 배열(Array)

LEE MINGYU 2025. 1. 11. 15:19

자바의 배열에 관한 정리


1. 배열이란?

배열(array)같은 데이터 타입의 값들을 순차적으로 저장하는 자료구조입니다. 배열은 고정된 크기를 가지며, 각 데이터는 인덱스(index)를 사용해 접근합니다. 자바에서 배열은 객체로 취급되며, 힙(heap) 메모리에 저장됩니다.

1-1. 배열의 특징

  • 같은 타입: 배열은 동일한 데이터 타입의 요소들로 구성됩니다.
  • 인덱스: 배열의 각 요소는 0부터 시작하는 고유한 인덱스를 가집니다.
  • 고정된 크기: 배열의 크기는 선언 시에 고정되며, 실행 중 변경할 수 없습니다.
  • 효율적인 데이터 처리: 반복문과 함께 사용하면 데이터를 효율적으로 처리할 수 있습니다.

2. 배열 선언과 생성

배열은 선언과 생성을 통해 사용할 수 있습니다. 배열 생성 후에는 초기화하여 값을 설정해야 합니다.

2-1. 배열 선언

배열은 데이터 타입 뒤에 대괄호([])를 추가하여 선언합니다.

int[] intArray; // 정수형 배열 선언
char[] charArray; // 문자형 배열 선언

2-2. 배열 생성

배열을 생성하려면 new 키워드와 함께 크기를 지정해야 합니다.

int[] intArray = new int[5]; // 크기 5인 정수형 배열 생성
char[] charArray = new char[10]; // 크기 10인 문자형 배열 생성

2-3. 선언과 생성 동시에 초기화

배열을 선언하면서 초기화 값을 지정할 수 있습니다.

int[] numbers = {1, 2, 3, 4, 5}; // 초기화된 값으로 배열 생성
char[] vowels = {'a', 'e', 'i', 'o', 'u'};

3. 배열의 원소 접근

배열의 각 원소는 인덱스를 사용해 접근할 수 있습니다. 인덱스는 0부터 시작하며, 마지막 인덱스는 (배열 크기 - 1)입니다.

int[] numbers = {10, 20, 30, 40, 50};
System.out.println(numbers[0]); // 출력: 10
numbers[1] = 25; // 두 번째 원소 변경
System.out.println(numbers[1]); // 출력: 25

3-1. 배열의 범위 주의

인덱스가 배열의 범위를 벗어나면 ArrayIndexOutOfBoundsException이 발생합니다.

int[] numbers = new int[3];
numbers[3] = 10; // 오류 발생: 배열의 크기(3)를 초과

4. 배열과 반복문

배열은 반복문과 함께 사용하면 효율적으로 처리할 수 있습니다.

4-1. for 문

int[] scores = {70, 85, 90, 100, 65};
for (int i = 0; i < scores.length; i++) {
    System.out.println("점수: " + scores[i]);
}

4-2. for-each 문

Java의 for-each 문은 배열의 각 요소에 직접 접근할 때 유용합니다.

int[] scores = {70, 85, 90, 100, 65};
for (int score : scores) {
    System.out.println("점수: " + score);
}

5. 배열의 크기와 length 필드

배열의 크기는 length 필드를 통해 확인할 수 있습니다.

int[] numbers = {1, 2, 3, 4, 5};
System.out.println("배열의 크기: " + numbers.length); // 출력: 5

6. 다차원 배열

6-1. 2차원 배열 선언과 생성

2차원 배열은 배열의 배열로 이루어진 구조입니다.

int[][] matrix = new int[3][4]; // 3행 4열의 2차원 배열 생성

6-2. 2차원 배열 초기화

2차원 배열은 중첩 중괄호를 사용해 초기화할 수 있습니다.

int[][] matrix = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};

6-3. 2차원 배열 접근

2차원 배열의 각 요소는 행과 열의 인덱스를 사용해 접근합니다.

System.out.println(matrix[0][1]); // 출력: 2 (0행 1열의 값)
matrix[1][2] = 10; // 값 변경
System.out.println(matrix[1][2]); // 출력: 10

7. 비정방형 배열

비정방형 배열은 행마다 열의 개수가 다른 배열을 말합니다.

int[][] jaggedArray = new int[3][];
jaggedArray[0] = new int[2]; // 첫 번째 행: 2개의 열
jaggedArray[1] = new int[3]; // 두 번째 행: 3개의 열
jaggedArray[2] = new int[4]; // 세 번째 행: 4개의 열

8. 배열 리턴과 메소드

배열은 메소드의 반환값으로 사용할 수 있습니다. 메소드에서 생성한 배열을 반환하면 메모리 효율적으로 값을 전달할 수 있습니다.

public static int[] createArray() {
    int[] array = {1, 2, 3, 4, 5};
    return array;
}

public static void main(String[] args) {
    int[] result = createArray();
    for (int value : result) {
        System.out.println(value);
    }
}

9. 배열 활용 예제

9-1. 배열에서 가장 큰 값 찾기

int[] numbers = {12, 34, 56, 78, 90};
int max = numbers[0];
for (int num : numbers) {
    if (num > max) {
        max = num;
    }
}
System.out.println("최대값: " + max);

9-2. 배열의 평균 구하기

int[] numbers = {10, 20, 30, 40, 50};
int sum = 0;
for (int num : numbers) {
    sum += num;
}
System.out.println("평균: " + (double) sum / numbers.length);

자바에서 배열은 데이터 관리와 처리에서 매우 중요한 역할을 합니다. 다양한 배열의 선언, 초기화, 접근 방법을 이해하고 반복문과 결합하여 효율적으로 활용하면 복잡한 데이터 구조도 쉽게 처리할 수 있습니다.

'JAVA' 카테고리의 다른 글

[JAVA] 자바의 예외처리  (0) 2025.01.11
[JAVA] 자바의 main() 메서드  (0) 2025.01.11
[JAVA] java의 입력(Buffered reader)  (0) 2024.11.17
[JAVA] java의 입력(Scanner)  (0) 2024.11.10
[JAVA] java의 연산자, 조건문, 반복문  (1) 2024.11.10