개발/JAVA

Java 기초편- 배열(Array) : 1차원 배열과 다차원 배열, 그리고 복사 방법 정리

예니03 2025. 1. 2. 11:19
반응형

Java에서 배열(Array)은 같은 데이터 타입의 여러 값을 하나의 변수에 저장할 수 있는 자료구조입니다. 배열은 효율적인 데이터 관리와 반복 작업을 처리하는 데 유용하게 사용됩니다. 이번 글에서는 1차원 배열, 다차원 배열, 그리고 배열 복사 방법을 예제와 함께 살펴보겠습니다. 😊

 

1. 배열의 기본 개념: 1차원 배열

1차원 배열은 가장 기본적인 형태의 배열로, 한 줄로 데이터를 나열한 구조입니다.

코드 예제: 배열 선언 및 사용

// 배열 선언
String[] names = {"김", "이", "박", "정"};  // 값 목록으로 초기화
float[] heights = {175.5f, 170.2f, 180.3f, 165.2f};  // 키를 저장
int[] scores = new int[4];  // 크기만 지정한 배열

// 배열 값 설정
scores[0] = 80; 
scores[1] = 90; 
scores[2] = 85; 
scores[3] = 88;

// 배열 출력
for (int i = 0; i < names.length; i++) {
    System.out.printf("%s (%.2f) : score = %d%n", 
                      names[i], heights[i], scores[i]);
}

실행 결과

김 (175.50) : score = 80  
이 (170.20) : score = 90  
박 (180.30) : score = 85  
정 (165.20) : score = 88

핵심 포인트

  1. 배열은 0부터 시작하는 인덱스를 사용해 값을 접근합니다.
  2. 배열 크기는 .length 속성을 이용해 알 수 있습니다.
  3. 배열 크기를 초과하는 인덱스에 접근하면 IndexOutOfBoundsException 오류가 발생합니다.

 

2. 배열 복사하기

Java의 배열은 크기를 변경할 수 없으므로, 새로운 배열을 만들어 기존 데이터를 복사해야 합니다.

(1) for문을 이용한 배열 복사

int[] scores = {1, 2, 3};  // 원본 배열
int[] target = new int[10];  // 더 큰 배열 생성

// 복사
for (int i = 0; i < scores.length; i++) {
    target[i] = scores[i];
}

System.out.println(Arrays.toString(target));  // 출력: [1, 2, 3, 0, 0, 0, 0, 0, 0, 0]

(2) System.arraycopy를 이용한 배열 복사

int[] source = {1, 2, 3};  // 원본 배열
int[] target = new int[10];  // 더 큰 배열 생성

System.arraycopy(source, 0, target, 3, source.length);
// source의 데이터를 target[3]부터 복사

System.out.println(Arrays.toString(target));  // 출력: [0, 0, 0, 1, 2, 3, 0, 0, 0, 0]

핵심 포인트

  • System.arraycopy는 빠르고 효율적으로 배열 복사를 수행합니다.
  • 복사 시작점과 길이를 명확히 설정해야 합니다.

 

3. 다차원 배열 (2차원 배열)

다차원 배열은 행과 열로 구성된 배열 구조로, 데이터를 테이블 형식으로 저장할 때 유용합니다.

코드 예제: 2차원 배열 선언 및 사용

int[][] table = {
    {1, 2, 3, 4, 5, 6, 7, 8, 9, 10},
    {2, 3, 4, 5, 6, 7, 8, 9, 10, 1},
    {3, 4, 5, 6, 7, 8, 9, 10, 1, 2},
    {4, 5, 6, 7, 8, 9, 10, 1, 2, 3},
    {5, 6, 7, 8, 9, 10, 1, 2, 3, 4}
};  // 5행 10열 배열

// 배열 크기 확인
System.out.println("Rows: " + table.length);           // 행 개수
System.out.println("Columns: " + table[0].length);    // 열 개수

// 배열 데이터 출력
int sum = 0;
for (int row = 0; row < table.length; row++) {  // 행 루프
    for (int col = 0; col < table[row].length; col++) {  // 열 루프
        System.out.print(table[row][col] + "\t");
        sum += table[row][col];  // 데이터 합산
    }
    System.out.println();
}
System.out.println("총합: " + sum);  // 데이터 총합

실행 결과

Rows: 5  
Columns: 10  
1	2	3	4	5	6	7	8	9	10  
2	3	4	5	6	7	8	9	10	1  
3	4	5	6	7	8	9	10	1	2  
4	5	6	7	8	9	10	1	2	3  
5	6	7	8	9	10	1	2	3	4  
총합: 275

핵심 포인트

  1. table.length: 행(Row) 개수를 반환합니다.
  2. table[row].length: 특정 행의 열(Column) 개수를 반환합니다.
  3. 행과 열에 대한 이중 반복문으로 데이터를 처리합니다.

 

정리

  1. 1차원 배열: 데이터를 선형으로 저장하며, 값 목록 또는 크기를 지정해 초기화할 수 있습니다.
  2. 배열 복사: for문이나 System.arraycopy를 사용하여 배열을 복사합니다.
  3. 다차원 배열: 행과 열의 구조로 데이터를 저장하며, 이중 반복문으로 데이터를 처리합니다.

배열은 효율적인 데이터 관리를 위한 강력한 도구입니다. 위 예제를 따라 해보며 배열의 개념을 익혀보세요! 😊

 

반응형