배열은 많은 데이터를 손쉽게 관리할 수 있는 매우 효율적인 데이터 구조입니다. Java에서는 기본적인 배열 사용법 외에도 다양한 방법으로 배열을 활용할 수 있습니다. 이번 포스팅에서는 배열을 사용하는 다양한 방법에 대해 살펴보겠습니다.
배열과 반복문
- for문 활용한 배열 순회
배열과 반복문은 거의 항상 같이 따라갑니다. 일단 반복문에서 배열을 사용하기 위해서는 배열의 길이를 알아내야 합니다. 배열의 길이를 알기 위해서는 length 속성을 통해 알 수 있습니다.
int length = numbers.length; // 배열의 길이 가져오기
위처럼 알아낸 배열의 길이를 통해 배열의 모든 요소를 순회하며 다음과 같이 for 루프를 사용할 수 있습니다.
for (int i = 0; i < numbers.length; i++) {
System.out.println(numbers[i]); // 배열의 각 요소 출력
}
- Enhanced for loop를 활용한 배열 순회
Java 5부터는 'Enhanced for loop'라는 새로운 반복문이 도입되었습니다. 이를 'for-each loop'라고도 부르며, 배열이나 컬렉션을 순회하는 데 특히 유용합니다.
다음은 'Enhanced for loop'를 사용하여 배열을 순회하는 예입니다.
int[] numbers = {1, 2, 3, 4, 5};
for(int num : numbers){
System.out.println(num);
}
이 코드는 numbers 배열의 모든 요소를 순회하며 각 요소를 출력합니다. 이와 같이 'Enhanced for loop'를 사용하면 배열의 인덱스를 직접 관리할 필요 없이 배열을 손쉽게 순회할 수 있습니다.
배열의 복사
배열을 다른 배열로 복사하려면 System.arraycopy() 메서드를 사용할 수 있습니다. 다음은 배열 복사의 예입니다.
int[] original = {1, 2, 3, 4, 5};
int[] copied = new int[5];
System.arraycopy(original, 0, copied, 0, original.length);
이 코드는 original 배열의 모든 요소를 copied 배열로 복사합니다. System.arraycopy() 메서드의 인자는 차례대로 원본 배열, 원본 배열에서 복사를 시작할 위치, 대상 배열, 대상 배열에서 복사를 시작할 위치, 복사할 요소의 개수입니다.
※ 주의사항
위의 예시에서 배열의 복사를 하기위해서 기위해 copied = original ; 이러한 형식을 생각할 수 도 있습니다. 하지만 이렇게 된다면 "original"과 "copied"는 동일한 메모리 주소를 가리키게 되며 "original[0]"의 값을 변경하면 "copied[0]"의 값도 동일하게 변하게 됩니다. 이를 방지하기 위해서는 System.arraycopy()를 사용하면 됩니다.
다차원 배열
Java에서는 다차원 배열을 사용할 수 있습니다. 다차원 배열은 배열의 각 요소가 또 다른 배열을 참조하는 배열입니다.
다차원 배열은 다음과 같이 선언하고 생성할 수 있습니다.
int[][] matrix = new int[2][3]; // 2행 3열의 2차원 배열 생성
다차원 배열의 각 요소에 접근하려면 다음과 같이 인덱스를 지정할 수 있습니다.
matrix[0][0] = 1;
matrix[0][1] = 2;
matrix[0][2] = 3;
matrix[1][0] = 4;
matrix[1][1] = 5;
matrix[1][2] = 6;
이렇게 Java에서 배열은 간단한 1차원 배열부터 복잡한 다차원 배열까지 다양하게 사용할 수 있습니다. 배열을 효율적으로 사용하면 대량의 데이터를 손쉽게 처리할 수 있으므로, 배열 사용법은 반드시 숙지해야 하는 중요한 기술입니다.
'개발 > Java' 카테고리의 다른 글
Java에서의 클래스(Class): 이해와 활용 (0) | 2023.07.17 |
---|---|
Java에서의 메소드(Method): 이해와 활용 (0) | 2023.07.13 |
Java에서의 배열: 기초 (0) | 2023.07.13 |
Java의 제어문: while문 (0) | 2023.07.13 |
Java의 제어문: for문 (0) | 2023.07.13 |