코테

(코테) [Java] 배열 생성

그린티_ 2025. 5. 13. 09:36
반응형

1. 정적 배열 (Static Array)

  • 크기가 고정된 배열을 선언할 때 사용
  • 한 번 크기를 설정하면 변경 불가능
  • new 키워드를 사용하여 배열을 생성

(1) 배열 선언 & 초기화

// 1️⃣ 선언 후 값 할당
int[] arr = new int[5]; // 길이가 5인 배열 생성 (기본값 0)

// 2️⃣ 선언과 동시에 초기화
int[] arr2 = {1, 2, 3, 4, 5};

// 3️⃣ new 키워드를 사용한 초기화
int[] arr3 = new int[]{10, 20, 30, 40, 50};

// 4️⃣ 다른 자료형 배열
String[] names = {"Alice", "Bob", "Charlie"};
double[] decimals = {1.1, 2.2, 3.3};

- 배열은 한 번 생성하면 크기 변경 불가능

- new int[5] → 길이가 5인 배열을 생성하면 기본값 0으로 초기화됨

 

(2) 배열 값 접근 & 수정

int[] arr = {10, 20, 30, 40, 50};

// 배열 요소 접근
System.out.println(arr[0]); // 10
System.out.println(arr[2]); // 30

// 배열 값 변경
arr[1] = 100;
System.out.println(arr[1]); // 100

- 배열의 인덱스는 0부터 시작!

- 배열 요소를 arr[index]로 접근하여 값 읽기/수정 가능

- arr.length : 배열 길이 알 수 있음

- 2차원일 경우 arr[0].length 까지 사용하면 행과 열의 길이를 각각 구할 수 있음

 

2. 동적 배열 (Dynamic Array)

  • 크기가 자동으로 조정되는 배열
  • ArrayList를 사용하여 크기를 변경 가능
  • add()를 사용하여 동적으로 요소 추가 가능

(1) ArrayList 사용

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>(); // 동적 배열 생성

        // 요소 추가
        list.add(10);
        list.add(20);
        list.add(30);

        System.out.println(list); // [10, 20, 30]

        // 요소 수정
        list.set(1, 100);
        System.out.println(list); // [10, 100, 30]

        // 요소 삭제
        list.remove(0);
        System.out.println(list); // [100, 30]

        // 크기 확인
        System.out.println(list.size()); // 2
    }
}

ArrayList는 자동으로 크기 조정 가능

.add() → 요소 추가

.set(index, value) → 요소 변경

.remove(index) → 요소 삭제

.size() → 현재 크기 확인

3. 정적 배열과 동적 배열 비교

비교 항목 정적 배열 (int[])  동적 배열 (ArrayList)
크기 변경 불가능 (고정됨) 가능 (자동 조정)
초기화 방법 new int[5], {1,2,3} new ArrayList<>()
요소 추가 불가능 (arr[n] = 값 직접 할당) .add() 사용 가능
요소 삭제 불가능 .remove(index) 사용 가능
성능 빠름 (고정 크기) 삽입/삭제 시 성능 저하 가능
언제 사용? 배열 크기가 변하지 않을 때 배열 크기가 유동적일 때

 

하지만 코딩테스트 풀면서 아직까지는 대부분 정적 배열을 사용해서 구현 했었음!

주어진 크기에 맞게 int [] arr = new int [n] 이런식으로 구현 했던 적이 많아서 2차원 배열 생성 및 배열을 받아왔을 때 행과 열 길이를 알고 활용할 줄 알면 좋다고 생각함!

반응형

'코테' 카테고리의 다른 글

(코테) [Java] Heap  (1) 2025.05.15
(코테) [Java] Deque  (0) 2025.05.15
(코테) [Java] Queue  (0) 2025.05.15
(코테) [Java] Stack  (0) 2025.05.15
(코테) [Java] 형변환  (0) 2025.05.13