본문 바로가기
프로그래밍/JAVA

초보 자바 프로그래밍(31) - 배열을 이용한 메서드 인자 전달

by 머니테크리더 2023. 5. 2.
반응형

배열을 이용한 메서드 인자 전달 대표 이미지
배열을 이용한 메서드 인자 전달 대표 이미지

🔖 INDEX

     

     

    배열을 이용한 메서드 인자 전달은 자바에서 매우 일반적인 패턴입니다. 배열을 사용하면 메서드에 여러 값을 한 번에 전달할 수 있고, 메서드의 매개변수를 유연하게 관리할 수 있습니다. 아래에서 자세한 내용을 확인해 보세요.

     

    배열을 이용한 메서드 인자 전달 방법

    1. 배열 선언 및 초기화:

    자바에서 배열을 선언하려면 데이터 타입 뒤에 대괄호를 사용합니다. 배열을 초기화하려면 new 키워드를 사용하여 배열의 크기를 지정합니다.

    int[] numbers = new int[5]; // int 타입의 배열 선언 및 초기화

     

    2. 배열 요소에 값 할당:

    배열의 각 요소에 값을 할당하려면 인덱스를 사용하여 접근합니다. 인덱스는 0부터 시작하며, 배열의 크기보다 작아야 합니다.

    numbers[0] = 1;
    numbers[1] = 2;
    numbers[2] = 3;
    numbers[3] = 4;
    numbers[4] = 5;

     

    3. 메서드에 배열 전달:

    배열을 메서드의 인자로 전달하려면 메서드의 매개변수에 배열을 선언하고 호출 시 배열을 전달하면 됩니다.

    // ArrayExample 클래스를 정의합니다.
    public class ArrayExample {
        // 프로그램의 시작점인 main 메서드를 정의합니다.
        public static void main(String[] args) {
            // 정수 배열을 선언하고 초기화합니다.
            int[] numbers = {1, 2, 3, 4, 5};
    
            // printArray 메서드를 호출하고, 정수 배열 numbers를 인자로 전달합니다.
            printArray(numbers);
        }
    
        // printArray 메서드를 정의합니다. 이 메서드는 정수 배열을 매개변수로 받습니다.
        public static void printArray(int[] arr) {
            // 배열의 길이만큼 반복문을 실행합니다.
            for (int i = 0; i < arr.length; i++) {
                // 배열의 인덱스와 해당 인덱스의 값(arr[i])을 출력합니다.
                System.out.println("arr[" + i + "] = " + arr[i]);
            }
        }
    }

    위의 예제에서는 ArrayExample 클래스의 main 메서드에서 정수 배열을 생성하고, printArray 메서드를 호출하여 배열을 전달합니다. printArray 메서드는 전달받은 배열의 길이만큼 반복하여 각 인덱스의 값을 출력합니다. 이를 통해 배열을 메서드의 인자로 전달하고 사용하는 방법을 보여줍니다. 

     

     

    4. 가변 인자(varargs) 사용:

    자바 5 이후로 가변 인자를 사용하여 개수가 정해지지 않은 인자를 메서드에 전달할 수 있습니다. 가변 인자는 메서드 매개변수에 세 개의 점(...)을 사용하여 선언합니다. 가변 인자는 내부적으로 배열로 처리되며, 인자의 개수에 상관없이 전달할 수 있습니다.

    // VarargsExample 클래스를 정의합니다.
    public class VarargsExample {
        // 프로그램의 시작점인 main 메서드를 정의합니다.
        public static void main(String[] args) {
            // printNumbers 메서드를 호출하고, 정수들을 가변 인자로 전달합니다.
            printNumbers(1, 2, 3, 4, 5);
        }
    
        // printNumbers 메서드를 정의합니다. 이 메서드는 가변 인자를 매개변수로 받습니다.
        // 가변 인자는 세 개의 점(...)을 사용하여 선언하며, 내부적으로 배열로 처리됩니다.
        public static void printNumbers(int... numbers) {
            // 가변 인자의 길이만큼 반복문을 실행합니다.
            for (int i = 0; i < numbers.length; i++) {
                // 가변 인자의 인덱스와 해당 인덱스의 값(numbers[i])을 출력합니다.
                System.out.println("numbers[" + i + "] = " + numbers[i]);
            }
        }
    }

    위의 예제에서는 VarargsExample 클래스의 main 메서드에서 printNumbers 메서드를 호출하면서 가변 인자를 사용합니다. 가변 인자는 메서드 호출 시 다양한 개수의 인자를 전달할 수 있습니다. printNumbers 메서드는 전달받은 가변 인자를 배열처럼 사용하여 각 인덱스의 값을 출력합니다. 이를 통해 가변 인자를 사용하여 메서드의 인자를 유연하게 관리하는 방법을 보여줍니다. ​

     

    다음은 메서드에 2차원 배열을 전달하는 예제입니다:

    // TwoDimensionalArrayExample 클래스를 정의합니다.
    public class TwoDimensionalArrayExample {
        // 프로그램의 시작점인 main 메서드를 정의합니다.
        public static void main(String[] args) {
            // 2차원 정수 배열을 선언하고 초기화합니다.
            int[][] matrix = {
                {1, 2, 3},
                {4, 5, 6},
                {7, 8, 9}
            };
            
            // printMatrix 메서드를 호출하고, 2차원 정수 배열 matrix를 인자로 전달합니다.
            printMatrix(matrix);
        }
    
        // printMatrix 메서드를 정의합니다. 이 메서드는 2차원 정수 배열을 매개변수로 받습니다.
        public static void printMatrix(int[][] matrix) {
            // 외부 반복문은 배열의 행 수만큼 반복합니다.
            for (int i = 0; i < matrix.length; i++) {
                // 내부 반복문은 각 행의 열 수만큼 반복합니다.
                for (int j = 0; j < matrix[i].length; j++) {
                    // 각 요소를 출력하고 탭(\t) 문자를 사용하여 요소들 사이에 공간을 만듭니다.
                    System.out.print(matrix[i][j] + "\t");
                }
                // 각 행의 출력이 끝나면 개행 문자를 출력하여 다음 행을 새로운 줄에서 출력합니다.
                System.out.println();
            }
        }
    }

    위의 예제에서는 TwoDimensionalArrayExample 클래스의 main 메서드에서 2차원 정수 배열을 생성하고, printMatrix 메서드를 호출하여 배열을 전달합니다. printMatrix 메서드는 전달받은 2차원 배열을 순회하면서 각 요소를 출력합니다. 이를 통해 2차원 배열을 메서드의 인자로 전달하고 사용하는 방법을 보여줍니다.

     

     

    배열을 이용한 메서드 인자 전달 시 주의 사항

    배열을 이용한 메서드 인자 전달 기법 사용 시 주의해야 할 점들은 다음과 같습니다.

    • 배열의 크기 고정: 배열은 한 번 생성되면 크기를 변경할 수 없습니다. 따라서 메서드 내에서 배열의 크기를 변경해야 하는 경우, 새로운 배열을 생성하고 값을 복사해야 합니다. 이럴 때는 ArrayList와 같은 동적인 자료 구조를 고려하는 것이 좋습니다.
    • 인덱스 범위 확인: 배열의 인덱스는 0부터 시작하며, 배열의 크기보다 작아야 합니다. 메서드에서 배열을 사용할 때 인덱스 범위를 초과하지 않도록 주의해야 하며, 필요한 경우 범위 확인을 수행해야 합니다.
    • 널(Null) 참조 처리: 배열은 참조 타입이므로, 초기화되지 않은 배열 변수는 널 참조를 가질 수 있습니다. 메서드에서 배열을 사용하기 전에 널 참조를 확인하고 적절한 처리를 해야 합니다.
    • 배열 요소의 기본값: 배열이 생성되면 모든 요소는 해당 데이터 타입의 기본값으로 초기화됩니다. 예를 들어, 정수 배열의 모든 요소는 0으로 초기화되고, 객체 배열의 모든 요소는 널 참조로 초기화됩니다. 메서드에서 배열을 사용할 때 요소의 초기값을 고려해야 합니다.
    • 배열의 공유: 배열은 참조 타입이므로 메서드에 전달되는 것은 배열의 참조입니다. 따라서 메서드에서 배열을 수정하면 원본 배열도 변경됩니다. 원본 배열을 보존하려면 메서드에서 배열의 복사본을 사용해야 합니다.
    • 가변 인자와 배열 혼용: 가변 인자(varargs)를 사용하는 경우, 메서드에 동일한 타입의 배열을 전달할 수도 있습니다. 이럴 때 가변 인자와 배열을 혼용하지 않도록 주의해야 하며, 메서드의 정의와 호출 시에 혼란을 피해야 합니다. ​

    이러한 주의 사항을 숙지하고 배열을 이용한 메서드 인자 전달 기법을 사용하면, 안전하고 효율적인 코드를 작성할 수 있습니다.

     

    배열을 이용한 메서드 인자 전달은 자바 프로그래밍에서 자주 사용되는 기법입니다. 배열을 사용하면 메서드에 다양한 개수의 인자를 전달할 수 있고, 가변 인자를 사용하면 더욱 유연한 코드 작성이 가능합니다. 배열을 사용하여 메서드 인자를 전달하는 방법을 숙지하면 자바 프로그래밍에서 다양한 상황에 대응할 수 있습니다.

     

     

    댓글