code

차이 fn (문자열… 인수) 대 fn (문자열 [] 인수)

codestyles 2020. 11. 27. 08:06
반응형

차이 fn (문자열… 인수) 대 fn (문자열 [] 인수)


이 구문이 유용한 이유 :

    function(String... args)

글쓰기와 같나요?

    function(String[] args) 

이 메서드를 호출하는 동안에 만 차이가 있거나 다른 기능이 관련되어 있습니까?


둘의 유일한 차이점은 함수를 호출하는 방법입니다. String var args를 사용하면 배열 생성을 생략 할 수 있습니다.

public static void main(String[] args) {
    callMe1(new String[] {"a", "b", "c"});
    callMe2("a", "b", "c");
    // You can also do this
    // callMe2(new String[] {"a", "b", "c"});
}
public static void callMe1(String[] args) {
    System.out.println(args.getClass() == String[].class);
    for (String s : args) {
        System.out.println(s);
    }
}
public static void callMe2(String... args) {
    System.out.println(args.getClass() == String[].class);
    for (String s : args) {
        System.out.println(s);
    }
}

차이점은 메서드를 호출 할 때만 다릅니다. 두 번째 양식은 배열로 호출해야하며 첫 번째 양식은 배열 (두 번째 양식과 마찬가지로 예, Java 표준에 따라 유효 함) 또는 문자열 목록 (쉼표로 구분 된 여러 문자열)을 사용하여 호출 할 수 있습니다. 인수가 전혀 없습니다 (두 번째 인수에는 항상 하나가 있어야하며 최소한 null이 전달되어야 함).

통 사적으로 설탕입니다. 실제로 컴파일러는

function(s1, s2, s3);

으로

function(new String[] { s1, s2, s3 });

내부적으로.


varargs ( String...)를 사용하면 다음 같이 메서드를 호출 할 수 있습니다.

function(arg1);
function(arg1, arg2);
function(arg1, arg2, arg3);

배열 ( String[]) 로는 할 수 없습니다.


첫 번째 함수를 다음과 같이 호출합니다.

function(arg1, arg2, arg3);

두 번째는 :

String [] args = new String[3];
args[0] = "";
args[1] = "";
args[2] = "";
function(args);

수신자 크기에서 String 배열을 얻습니다. 차이점은 호출 측에만 있습니다.


class  StringArray1
{
    public static void main(String[] args) {
        callMe1(new String[] {"a", "b", "c"});
        callMe2(1,"a", "b", "c");
    callMe2(2);
        // You can also do this
        // callMe2(3, new String[] {"a", "b", "c"});
}
public static void callMe1(String[] args) {
        System.out.println(args.getClass() == String[].class);
        for (String s : args) {
            System.out.println(s);
        }
    }
    public static void callMe2(int i,String... args) {
        System.out.println(args.getClass() == String[].class);
        for (String s : args) {
            System.out.println(s);
        }
    }
}

참고 URL : https://stackoverflow.com/questions/301563/difference-fnstring-args-vs-fnstring-args

반응형