Java Arrays.clear()? 솔직히 말해보자: 배열을 올바르게 비우는 방법

발행: (2025년 12월 14일 오후 10:47 GMT+9)
5 min read
원문: Dev.to

Source: Dev.to

아마도 Stack Overflow, Google, 그리고 어쩌면 GitHub Copilot의 제안을 뒤져 보면서 Java에서 마법 같은 Arrays.clear() 메서드를 찾고 있었을 겁니다. 입력해 보니 IDE가 무서운 빨간 물결선을 표시하고, “왜 Java에 이렇게 기본적인 메서드가 없지?” 라는 생각이 들었겠죠.

직설적으로 말하자면, 표준 Java에는 Arrays.clear() 메서드가 없습니다. 놓친 조각처럼 느껴질 수 있겠지만, 혼자가 아니니 걱정 마세요. 단 하나의 메서드가 없다고 해서 배열을 비우는 목표를 달성할 수 없는 것은 아닙니다.

“배열을 비운다”는 것이 과연 무슨 뜻일까?

코드를 한 줄도 쓰기 전에 개념을 정리해 봅시다. Java에서 배열은 고정 크기의 컨테이너입니다. 예를 들어 10개의 슬롯을 가진 배열을 만든다고 하면, 그 슬롯들은 객체 배열이라면 레퍼런스, 원시 타입 배열이라면 실제 값(int, char 등)을 담고 있습니다.

“비운다(clear)”고 할 때 보통 다음 두 가지 의미 중 하나를 말합니다:

  • null 로 채우기 / 0 으로 초기화 – 모든 요소를 “빈” 상태로 바꾸는 것. 객체 배열이라면 null, 원시 타입 배열이라면 기본값(int0, booleanfalse, double0.0 등)으로 채웁니다.
  • 재생성 – 새로운 배열을 만들고 기존 배열은 가비지 컬렉션에 맡기는 방법.

clear() 하나만으로 모든 경우를 처리할 수 없는 이유는 “가장 좋은” 방법이 목표와 성능 요구 사항에 따라 달라지기 때문입니다.

Java에서 배열을 “비우는” 현실적인 방법

방법 1: 좋은 옛날 루프 (수동 초기화)

가장 간단하면서도 가장 명시적인 방법은 직접 루프를 돌면서 각 인덱스를 빈 값으로 설정하는 것입니다.

// 문자열 배열을 비우기 (객체 배열)
String[] playlist = {"Song A", "Song B", "Song C", "Song D"};
for (int i = 0; i < playlist.length; i++) {
    playlist[i] = null;
}
// 동적 List와 its clear() 메서드 사용
List<String> dynamicList = new ArrayList<>(Arrays.asList("A", "B", "C"));
dynamicList.clear(); // 퍽! 비워짐.
System.out.println(dynamicList.size()); // 0

FAQ

Q1: 왜 Java에 Arrays.clear()가 없을까?
A: API 설계자들은 이것이 중복된 기능이라고 판단했을 가능성이 높습니다. Arrays.fill(array, null/0)이 기능적으로 동일하고 더 유연합니다(원하는 어떤 값으로든 채울 수 있음). 또한 본질적으로 같은 일을 하는 메서드가 늘어나는 것을 방지합니다.

Q2: array = null과 배열을 비우는 것의 차이는?
A: array = null은 변수가 아무 객체도 가리키지 않게 만드는 것이고, 다른 레퍼런스가 남아 있다면 실제 배열 객체는 메모리에 남아 있을 수 있습니다. 반면 비우기(예: Arrays.fill)는 기존 배열 객체 내부의 내용을 기본값으로 바꾸는 것입니다.

Q3: 2‑D(다차원) 배열은 어떻게 비우나요?
A: 보통 각 내부 배열을 순회하면서 비웁니다.

int[][] matrix = new int[3][3];
for (int[] row : matrix) {
    Arrays.fill(row, 0);
}

Q4: 배열을 비우는 것이 컬렉션을 비우는 것과 같은가?
A: Java에서는 배열을 비우면 모든 요소가 기본값으로 바뀌어 실질적인 데이터가 사라지므로 “빈” 상태와 동일합니다. 하지만 배열 자체의 길이는 변하지 않습니다. 진정으로 비어 있는 컬렉션이 필요하다면 List 같은 컬렉션을 사용하는 것이 좋습니다.

Back to Blog

관련 글

더 보기 »