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

초보 자바 프로그래밍(32) - 배열을 반환하는 메서드 작성

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

배열을 반환하는 메서드 작성 대표 이미지
배열을 반환하는 메서드 작성 대표 이미지

🔖 INDEX

     

     

    메서드에서 배열을 반환하려면, 반환 타입을 해당 배열 타입으로 명시해야 합니다. 그리고 메서드 내부에서 배열을 생성, 채우거나 수정한 후에 'return' 키워드를 사용하여 해당 배열을 반환해야 합니다.

     

    메서드에서 배열 반환하기

    자바에서 배열을 반환하는 과정은 다음과 같습니다. ​

     

    1. 메서드의 반환 타입을 배열 타입으로 명시하기

    반환하고자 하는 배열의 타입을 명시해야 합니다. 예를 들어, int형 배열을 반환하는 메서드를 작성하려면 반환 타입을 'int[]'로 지정해야 하며, String형 배열을 반환하려면 반환 타입을 'String[]'로 지정해야 합니다. 

    public static int[] returnIntArray() { ... }
    public static String[] returnStringArray() { ... }

     

    2. 배열 생성 및 초기화

    메서드 내부에서 반환할 배열을 생성하고 초기화해야 합니다. 배열의 크기를 정해주거나 다른 메서드에서 받은 매개변수를 사용하여 크기를 할당할 수 있습니다. 또한 배열의 요소를 채우거나 수정할 수 있습니다.

    int[] intArray = new int[5];
    String[] stringArray = new String[3];

     

    3. 배열 반환하기

    'return' 키워드를 사용하여 배열을 반환합니다. 반환할 배열의 이름을 'return' 키워드 다음에 작성하면 됩니다.

    return intArray;
    return stringArray;

     

     

    아래 예제는 간단한 문자열 배열을 반환하는 메서드를 작성해 보겠습니다.

    // ArrayReturnExample 클래스 선언
    public class ArrayReturnExample {
    
        // 메인 메서드 선언
        public static void main(String[] args) {
            // getGreetings 메서드를 호출하고 반환받은 문자열 배열을 greetings 변수에 저장
            String[] greetings = getGreetings();
    
            // 반환받은 greetings 배열의 각 요소를 출력
            // 향상된 for문을 사용하여 배열의 모든 요소를 순회하고, 각 요소를 greeting 변수에 저장
            for (String greeting : greetings) {
                // 현재 순회 중인 greeting을 출력
                System.out.println(greeting);
            }
        }
    
        // 문자열 배열을 반환하는 getGreetings 메서드 선언
        public static String[] getGreetings() {
            // 크기가 3인 문자열 배열을 생성하고 greetingsArray 변수에 저장
            String[] greetingsArray = new String[3];
    
            // 배열의 각 인덱스에 다양한 인사말을 저장
            greetingsArray[0] = "Hello";      // 인덱스 0에 영어 인사말 저장
            greetingsArray[1] = "안녕하세요"; // 인덱스 1에 한국어 인사말 저장
            greetingsArray[2] = "Hola";       // 인덱스 2에 스페인어 인사말 저장
    
            // 채워진 greetingsArray 배열을 반환
            return greetingsArray;
        }
    }

    위 예제에서 'getGreetings' 메서드는 문자열 배열을 반환합니다. 이 메서드는 크기가 3인 문자열 배열을 생성하고, 배열의 각 요소에 다양한 인사말을 저장한 후에 해당 배열을 반환합니다. 이렇게 메서드에서 배열을 반환하는 방법을 활용하여 프로그램의 다양한 기능을 구현 할 수 있습니다.

     

     

    메서드에서 배열 복사본 반환하기

    배열을 반환하는 메서드를 작성할 때 주의해야 할 점은 배열의 참조값이 반환된다는 것입니다.

    따라서 반환된 배열을 수정하면 원본 배열도 영향을 받을 수 있습니다. 원본 배열에 영향을 주지 않도록 하려면, 배열의 복사본을 반환해야 합니다. ​원본 배열에 영향을 주지 않고 배열을 반환하려면, System.arraycopy() 메서드를 사용하여 배열의 복사본을 반환할 수 있습니다.

     

    다음은 배열을 복사하여 반환하는 예제 코드입니다.

    // ArrayReturnExampleWithCopy 클래스 선언
    public class ArrayReturnExampleWithCopy {
    
        // 메인 메서드 선언
        public static void main(String[] args) {
            // getGreetings 메서드를 호출하고 반환받은 문자열 배열을 greetings 변수에 저장
            String[] greetings = getGreetings();
    
            // 반환받은 greetings 배열의 각 요소를 출력
            // 향상된 for문을 사용하여 배열의 모든 요소를 순회하고, 각 요소를 greeting 변수에 저장
            for (String greeting : greetings) {
                // 현재 순회 중인 greeting을 출력
                System.out.println(greeting);
            }
        }
    
        // 문자열 배열을 반환하는 getGreetings 메서드 선언
        public static String[] getGreetings() {
            // 크기가 3인 문자열 배열을 생성하고 greetingsArray 변수에 저장
            String[] greetingsArray = new String[3];
    
            // 배열의 각 인덱스에 다양한 인사말을 저장
            greetingsArray[0] = "Hello";      // 인덱스 0에 영어 인사말 저장
            greetingsArray[1] = "안녕하세요"; // 인덱스 1에 한국어 인사말 저장
            greetingsArray[2] = "Hola";       // 인덱스 2에 스페인어 인사말 저장
    
            // 원본 배열을 수정하지 않고 반환하기 위해 배열의 복사본을 생성
            String[] greetingsArrayCopy = new String[3];
    
            // System.arraycopy() 메서드를 사용하여 원본 배열의 내용을 복사본 배열로 복사
            // 원본 배열(greetingsArray), 시작 인덱스(0), 복사본 배열(greetingsArrayCopy), 시작 인덱스(0), 복사할 요소 수(3)를 전달
            System.arraycopy(greetingsArray, 0, greetingsArrayCopy, 0, 3);
    
            // 채워진 greetingsArrayCopy 배열을 반환
            return greetingsArrayCopy;
        }
    }

    위 코드는 원본 배열(greetingsArray)의 수정이 다른 곳에서 영향을 주지 않도록 복사본 배열(greetingsArrayCopy)을 반환하는 예제입니다. 주석을 통해 각 코드의 역할과 작동 방식을 자세하게 이해할 수 있습니다.

     

     

    댓글