Java 預設引數
Mohammad Irfan
2023年1月30日
2021年4月29日
本教程介紹瞭如何在 Java 中實現預設引數。
如果不傳遞任何值,則使用預設引數。當我們要在方法接受多個引數的同時傳遞有限的引數時,這將很有幫助。例如,一個方法接受三個引數,但是如果我們希望在方法呼叫期間僅傳遞兩個引數,則 Java 編譯器將使用第三個引數的預設值來避免任何編譯錯誤。
Java 不支援預設引數值,但是我們可以使用一些內建解決方案來實現它,例如 var-args 或方法過載。讓我們看一些例子。
Java 中的預設引數
在此示例中,我們使用方法過載方法來設定預設引數值。但是,這不是一個好的解決方案,但可以用作替代方案。注意,在呼叫 add()
方法時,我們將 0 作為預設值。
如果我們有兩個相同型別的可選引數,則該方法無效,並且可以省略其中的任何一個。
public class SimpleTesting{
int add(int a, int b) {
return a+b;
}
int add(int a, int b, int c) {
return a+b+c;
}
public static void main(String[] args) {
SimpleTesting test = new SimpleTesting();
int val1 = 10;
int val2 = 20;
int result1 = test.add(val1, 0);
int result2 = test.add(val1, 0, val2);
System.out.println("resutl1 : "+ result1);
System.out.println("resutl2 : "+result2);
}
}
輸出:
resutl1 : 10
resutl2 : 30
在 Java 中使用 var-args 設定預設引數
這是我們使用可變 args 功能設定預設引數的另一種方法。var-args
允許傳遞可變長度的相同型別的引數。請參見下面的示例。
public class SimpleTesting{
int add(int a, int... b) {
int b2 = b.length>0?b[0]:0;
return a+b2;
}
int add(int a, int b, int c) {
return a+b+c;
}
public static void main(String[] args) {
SimpleTesting test = new SimpleTesting();
int val1 = 10;
int val2 = 20;
int result1 = test.add(val1);
int result2 = test.add(val1, 0, val2);
System.out.println("resutl1 : "+ result1);
System.out.println("resutl2 : "+result2);
}
}
輸出:
resutl1 : 10
resutl2 : 30
在 Java 中將預設引數設定為空字串
對於字串引數,我們可以為引數設定一個空字串。但是,此字串將 null 保留為預設值。請參見下面的示例。
public class SimpleTesting{
String defaulPara(int a, String str1, String str2) {
return str1+str2+a;
}
public static void main(String[] args) {
SimpleTesting test = new SimpleTesting();
int val1 = 10;
String result1 = test.defaulPara(val1,"","second");
String result2 = test.defaulPara(val1,"first","");
System.out.println("resutl1 : "+ result1);
System.out.println("resutl2 : "+result2);
}
}
輸出:
resutl1 : second10
resutl2 : first10
在 Java 中使用帶有任意數量引數的 var-args 設定預設引數
在使用 var-args 的情況下,我們可以在呼叫方法時隨意提供任意數量的引數。因此,如果你只想提供有限的引數,那麼它將很好地工作。請參見下面的示例。
public class SimpleTesting{
int defaulPara(int... a) {
int sum = 0;
for (int i : a) {
sum+=i;
}
return sum;
}
public static void main(String[] args) {
SimpleTesting test = new SimpleTesting();
int val1 = 10;
int val2 = 20;
int result1 = test.defaulPara();
int result2 = test.defaulPara(val1);
int result3 = test.defaulPara(val1, val2);
System.out.println("resutl1 : "+ result1);
System.out.println("resutl2 : "+result2);
System.out.println("resutl3 : "+result3);
}
}
輸出:
resutl1 : 0
resutl2 : 10
resutl3 : 30