실제로 이해가 되는 Java 배열 메서드
Source: Dev.to
배열은 처음에 솔직히 헷갈렸어요. 개념 자체는 — 여러 값을 저장한다는 것 — 괜찮았지만, 서로 다른 클래스에 흩어져 있는 다양한 유틸리티 메서드들이 혼란스러웠습니다. 이해하는 데 시간이 좀 걸렸죠.
알아두면 좋은 두 클래스
대부분의 배열 유틸리티 메서드는 java.util.Arrays 에 있습니다 — 이 클래스를 import 해야 합니다.
크기 조정이나 동적 작업을 위해서는 ArrayList 가 친구가 되지만(그건 별도 주제입니다).
import java.util.Arrays;
배열 유틸리티 메서드
Arrays.sort()
배열을 오름차순으로 정렬합니다. 숫자와 문자열 모두에 적용됩니다.
int[] nums = {5, 2, 8, 1, 9};
Arrays.sort(nums);
// nums는 이제 {1, 2, 5, 8, 9}
Arrays.toString()
디버깅에 유용합니다. 메모리 주소 대신 배열 내용을 출력합니다.
int[] nums = {1, 2, 3};
System.out.println(nums); // [I@6d06d69c ← 쓸모없음
System.out.println(Arrays.toString(nums)); // [1, 2, 3] ← 유용함
Arrays.fill()
모든 요소를 하나의 값으로 채웁니다. 초기화에 편리합니다.
int[] grid = new int[5];
Arrays.fill(grid, 0);
// {0, 0, 0, 0, 0}
Arrays.copyOf()
배열을 새 배열로 복사합니다. 복사하면서 크기를 조정할 수도 있습니다.
int[] original = {1, 2, 3, 4, 5};
int[] copy = Arrays.copyOf(original, 3);
// copy = {1, 2, 3}
Arrays.copyOfRange()
배열의 특정 구간을 복사합니다.
int[] nums = {10, 20, 30, 40, 50};
int[] slice = Arrays.copyOfRange(nums, 1, 4);
// slice = {20, 30, 40}
Arrays.equals()
두 배열이 같은 순서와 값으로 동일한지 확인합니다.
int[] a = {1, 2, 3};
int[] b = {1, 2, 3};
System.out.println(a == b); // false (다른 객체)
System.out.println(Arrays.equals(a, b)); // true ✅
문자열과 같은 교훈 — 배열을 비교할 때 == 를 절대 사용하지 마세요.
Arrays.binarySearch()
값을 검색하고 해당 인덱스를 반환합니다. 먼저 배열을 정렬해야 하며, 그렇지 않으면 결과가 예측 불가능합니다.
int[] nums = {1, 3, 5, 7, 9};
int index = Arrays.binarySearch(nums, 5);
// index = 2
array.length
메서드가 아니라 속성입니다. 어디서든 사용하세요.
int[] nums = {4, 8, 15, 16, 23};
System.out.println(nums.length); // 5
괄호 없이 .length 만 사용합니다, .length() 가 아닙니다.
빠른 참고표
| 메서드 | 기능 |
|---|---|
Arrays.sort() | 오름차순 정렬 |
Arrays.toString() | 읽기 쉬운 형식으로 출력 |
Arrays.fill() | 모든 값 설정 |
Arrays.copyOf() | 복사 (크기 조정 옵션 포함) |
Arrays.copyOfRange() | 구간 복사 |
Arrays.equals() | 두 배열 비교 |
Arrays.binarySearch() | 값의 인덱스 찾기 |
.length | 배열 크기 얻기 |
기억해야 할 한 가지
Java의 배열은 고정 크기를 가집니다 — 한 번 생성하면 요소를 추가하거나 제거할 수 없습니다. 크기를 동적으로 조절하려면 ArrayList 를 사용하세요.
// 고정 크기 — 늘릴 수 없음
int[] arr = new int[5];
// 유연함 — 추가/제거 가능
ArrayList list = new ArrayList<>();
이건 또 다른 글이 필요하겠네요. 😄
질문이 있거나 다음에 ArrayList 를 다루었으면 좋겠다면 아래에 댓글을 남겨 주세요!
행복한 코딩 되세요 🙌