程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> java基礎之String... args VS String[] args

java基礎之String... args VS String[] args

編輯:JAVA編程入門知識

動態參數 String... args,可以傳遞0~N個參數;

數組參數 String[] args,需要實例化或者指定為null ;(方法內部需要對null進行判定)

//利用動態參數進行參數傳遞
public static void sayHello(String... args) { for (String s : args) { System.out.println("hi," + s); } }
//利用數組進行參數傳遞 public static void sayArrayHello(String[] args) { for (String s : args) { System.out.println("hi," + s); } }

編譯後的代碼如下:

public static void sayHello(String... args) {
        String[] arr$ = args;
        int len$ = args.length;

        for(int i$ = 0; i$ < len$; ++i$) {
            String s = arr$[i$];
            System.out.println(s);
        }

    }

 public static void sayArrayHello(String[] args) {
        String[] arr$ = args;
        int len$ = args.length;

        for(int i$ = 0; i$ < len$; ++i$) {
            String s = arr$[i$];
            System.out.println(s);
        }

    }

個人認為兩者此時,編譯後的代碼是相同的。

那麼,他們兩個又有哪些區別呢?

區別一、動態參數可以有任意多個,而且是可以作為缺省;而數組參數,需要實例化或者指定為null ;(方法內部需要對null進行判定);

    public static void sayHello(Boolean sayProfix, String... args) {
        for (String s : args) {
            System.out.println(sayProfix + s);
        }
    }

    public static void sayArrayHello(Boolean sayProfix, String[] args) {
        for (String s : args) {
            System.out.println(sayProfix + s);
        }
    }

調用方:

        sayHello(true, "a", "b", "c", "d");
        sayHello(false);//依然可以正常執行
        System.out.println("end string... args");

        sayArrayHello(true, new String[]{"_a", "_b", "_c", "_d"});
        sayArrayHello(false, new String[]{});//必須聲明一個數組
        System.out.println("enf of string[] args");

 

其實,更多的還是在於調用方的區別。動態參數(String...) 類似於C#中的參數設置了默認值,在傳遞時,如果不傳遞,將默認使用指定的默認值;

public static void Csharp(bool sayProfix,string content="",int flag=1 )
{
   //todo   
}

 

that's all.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved