[Java]가변인자란

jh5959·2026년 2월 24일

Java

목록 보기
8/9

가변인자: 매개변수의 개수를 동적으로 지정해주는 것

가변인자는 내부에서 배열로 처리한다.
가변인자는 맨 뒤에 선언해야 한다. 가변인자인지 아닌지 모르기 때문이다.

public class VarArgsEx {//6-22
    public static void main(String... args){//이건 가변인자군 ->여기서는 배열인데 가변인자로 적어도 실행이 된다 
        String[] strArr = {"100","200","300"};

        System.out.println(concatenate("","100","200","300"));
        System.out.println(concatenate("-",strArr));
        System.out.println(concatenate(",",new String[]{"1","2","3"}));
        System.out.println("["+concatenate(",",new String[0])+"]"); //크기가 0인 스트링 배열일뿐 값이 있지않아 args 매개변수로 전해진 값이 없다
        System.out.println("["+concatenate(",")+"]");//args 매개변수로 전달된 값이 없어서 메서드안에 for문도 실행이 되지 않아 [] 만 출력된다 
        
    }
    static String concatenate(String delim,String... args){
        String result = ""; //기본값

        // for(String str: args){
        //     result += str + delim;
        // }

        //가변인자는 배열로 처리한다
        // for(int i=0; i<args.length; i++){
        //     result += args[i] + delim;
        // }

        //마지막 단어 뒤에 구분자 안붙게 하는법
        for(int i=0; i<args.length; i++){
            if(i!=args.length-1)
                result += args[i]+ delim;
            else
                result += args[i] ;
        }

        return result;
    }
    
    // static String concatenate(String... args) {
	// 	return concatenate("", args);
	// }
    //안되는 이유는 ("a","b","c")라고 부르면 a를 delim으로 보고 나머지를 가변인자로 볼지 아니면 모두 가변인자로 볼지 둘 다 가능해서 안되는거임 
}



/*
    1. 마지막 단어 뒤에 구분자 안붙게 하는 법
    2. 가변인자를 매개변수 맨 앞에 두면 에러가 나는 이유
    -> 가변인자랑 다른 매개변수랑 같이 있을 때만 맨 앞에 두면 안되고 마지막에 두어야 하는데 그러면 인자의 값이 다 가변인자로 인식이 되어서 그런다
    3. 가변인자는 내부에서 배열로 처리된다 
    
*/

0개의 댓글