어제 오늘 내일

[Java] 배열 선언 및 초기화 방법 (선언과 동시 초기화, 다차원 배열, Stream, 난수 초기화 등) 본문

IT/Java

[Java] 배열 선언 및 초기화 방법 (선언과 동시 초기화, 다차원 배열, Stream, 난수 초기화 등)

hi.anna 2025. 3. 12. 06:37

 

Java 배열 선언 및 초기화 방법

Java에서 배열을 초기화하는 방법은 여러 가지가 있습니다. 

 

 

1. 선언과 동시에 값 초기화 (정적 초기화)

배열을 선언하면서 동시에 값을 할당하는 방법입니다.

int[] numbers = {1, 2, 3, 4, 5};
String[] names = {"Alice", "Bob", "Charlie"};
boolean[] flags = {true, false, true};

설명

  • {} 안에 값을 나열하면 자동으로 배열이 생성됩니다.
  • 크기를 별도로 지정하지 않아도 됩니다.

 

 

2. new 키워드를 사용하여 초기화

int[] numbers = new int[]{1, 2, 3, 4, 5};
String[] names = new String[]{"Alice", "Bob", "Charlie"};
  • new 키워드를 사용하면 명시적으로 배열을 생성할 수 있습니다.
  • {}와 new를 함께 사용하는 방식은 변수 선언과 동시에 사용해야 합니다.
  • 선언 후 따로 초기화할 때는 사용 불가......
    int[] arr;
    arr = {1, 2, 3}; // error

 

 

 

3. 크기만 지정하고 기본값으로 초기화

int[] numbers = new int[5];  // {0, 0, 0, 0, 0}
double[] decimals = new double[3]; // {0.0, 0.0, 0.0}
boolean[] flags = new boolean[4]; // {false, false, false, false}
String[] names = new String[3]; // {null, null, null}

설명

  • 배열 크기만 지정하면 각 요소는 기본값으로 초기화됩니다.
    • int → 0
    • double → 0.0
    • boolean → false
    • String 및 객체 → null

 

 

 

4. 배열 선언 후 개별적으로 초기화

int[] numbers = new int[3];
numbers[0] = 10;
numbers[1] = 20;
numbers[2] = 30;

설명

  • 먼저 크기를 지정한 배열을 만든 후, 각 인덱스에 개별적으로 값을 할당하는 방식입니다.

 

 

 

5. Arrays.fill()을 이용한 초기화

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] numbers = new int[5];
        Arrays.fill(numbers, 100); // 모든 요소를 100으로 설정
        System.out.println(Arrays.toString(numbers));
    }
}

실행 결과:

[100, 100, 100, 100, 100]

설명

  • Arrays.fill(배열, 값)을 사용하면 배열의 모든 요소를 특정 값으로 초기화할 수 있습니다.

 

 

 

6. Arrays.copyOf()를 이용한 배열 복사 및 초기화

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] original = {1, 2, 3};
        int[] copy = Arrays.copyOf(original, 5); // 크기를 5로 늘림 (남는 공간은 0으로 채움)
        System.out.println(Arrays.toString(copy));  // [1, 2, 3, 0, 0]
    }
}

실행 결과:

[1, 2, 3, 0, 0]

설명

  • Arrays.copyOf(원본배열, 새로운 크기)를 사용하면 기존 배열을 기반으로 새로운 배열을 만들 수 있습니다.
  • 크기를 늘리면 빈 공간은 기본값(0)으로 채워집니다.

 

 

7. 다차원 배열 초기화

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

설명

  • 2차원 배열도 {}를 중첩해서 초기화할 수 있습니다.

 

 

8. Stream을 이용한 배열 초기화 (Java 8+)

import java.util.Arrays;
import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        int[] numbers = IntStream.rangeClosed(1, 5).toArray();
        System.out.println(Arrays.toString(numbers));
    }
}

실행 결과:

[1, 2, 3, 4, 5]
  • IntStream.rangeClosed(1, 5) → 1부터 5까지 숫자를 생성합니다.
  • .toArray()를 사용하여 배열로 변환합니다.

 

 

9. 리스트를 배열로 변환 (List → Array)

import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<String> nameList = Arrays.asList("Alice", "Bob", "Charlie");
        String[] nameArray = nameList.toArray(new String[0]); // 리스트를 배열로 변환
        System.out.println(Arrays.toString(nameArray));
    }
}

 

실행 결과:

[Alice, Bob, Charlie]
  • List를 배열로 변환할 때 toArray(new String[0])를 사용하면 됩니다.

 

 

10. 난수를 활용한 배열 초기화

import java.util.Arrays;
import java.util.Random;

public class Main {
    public static void main(String[] args) {
        int[] numbers = new int[5];
        Random random = new Random();

        for (int i = 0; i < numbers.length; i++) {
            numbers[i] = random.nextInt(100); // 0~99 사이의 난수 생성
        }

        System.out.println(Arrays.toString(numbers));
    }
}

실행 결과 (예시):

[23, 87, 45, 12, 78]
  • Random.nextInt(100)을 이용해 배열을 난수로 채울 수 있습니다.

 

 

정리

정적 초기화 int[] arr = {1, 2, 3}; 간단한 방식, 크기 자동 결정
new 키워드 사용 int[] arr = new int[]{1, 2, 3}; 명시적으로 배열 객체 생성
크기만 지정 int[] arr = new int[5]; 기본값(0, null)으로 초기화
개별 요소 할당 arr[0] = 10; 나중에 값을 지정할 경우
Arrays.fill() Arrays.fill(arr, 100); 모든 요소를 같은 값으로 설정
Arrays.copyOf() Arrays.copyOf(arr, 5); 배열 크기 확장 및 복사
Stream 활용 (Java 8+) IntStream.rangeClosed(1, 5).toArray(); 동적 배열 생성
List → 배열 변환 list.toArray(new String[0]); 리스트를 배열로 변환
난수 초기화 new Random().nextInt(100); 랜덤한 값으로 배열 채우기

 

 

 

반응형
Comments