可變參數函數是一種接受不定數量參數的函數。
讓我們看看 Java 中這些函數的原因是什麼。假設我們有一個求和方法,它接收兩個整數並傳回兩者的總和。
public static int summation(int a, int b) { return a + b; }
如果我們想要將三個數字相加,我們必須重載求和方法以接受三個參數。
public static int summation(int a, int b, int c) { return a + b + c; }
如果我們想將四個數字相加會發生什麼事?同樣,求和方法必須重載。
public static int summation(int a, int b, int c, int d) { return a + b + c + d; }
正如我們所見,這是不可擴展的,因為每次需要不同數量的參數時,方法都必須再次重載。此時,您可以考慮傳遞一個整數數組作為參數,但這只不過是包裝實際參數並使該方法現在明確依賴於新的資料類型。
對於這些情況,存在可變參數函數,可以接受無限數量的參數,而不需要將它們包裝在另一種類型的可見結構中。重要的是要考慮到 Java 在內部所做的是使用傳遞給可變參數函數的參數來建立數組,因此我們可以使用數組的方法。
可變參數函數的宣告方式與任何普通函數相同,但作為參數,它的最後一個或唯一的參數必須符合以下格式:資料類型...變數名稱。在聲明方式中,唯一改變的是在資料類型後面增加了三個點...。在某些語言中,這種類型的參數稱為 varargs。讓我們看看求和方法如何像可變參數函數。
public static int summation(int... numbers) { int sum = 0; for (int number : numbers) { sum += number; } return sum; }
現在我們可以添加任意數量的數字,而無需重載求和方法,唯一的限制是它們必須具有相同的資料類型。
System.out.println(summation(1, 2)); // 3 System.out.println(summation(1, 2, 3)); // 6 System.out.println(summation(1, 2, 3, 4)); // 10 System.out.println(summation(2, 8, 16, 32, 64, 128, 256, 512, 1024, 2048)); // 4090
之前提到過,Java 在內部將可變參數函數的參數作為數組處理,即將它們包裝在數組中,這允許我們使用數組的方法。例如,您可以使用 Arrays 類別的 sum 方法在求和方法中將陣列的所有元素相加。
public static int summation(int... numbers) { return Arrays.stream(numbers).sum(); }
考慮到上述情況,可變參數函數也可以作為參數傳遞它接受的資料類型的數組,無論它看起來多麼奇怪。這樣,Java 不再需要將參數包裝在陣列中,因為陣列是直接作為參數傳遞的。
public static int summation(int a, int b) { return a + b; }
但是,如果求和方法由於某種原因需要 double 類型的第二個參數,除了聲明為可變參數函數時已經可以接收的 n 個整數,會發生什麼情況。在這種情況下,必須使用所需的附加參數來聲明求和方法,並在末尾添加可變參數或 varargs,如下所示。
public static int summation(int a, int b, int c) { return a + b + c; }
透過這種方式,你可以傳遞一個double 數字作為第一個參數,以及你想要添加的整數作為附加參數,Java 會自動知道第一個參數是double 類型,後面的參數是int 類型,考慮一下參數variadic 應該始終是函數的最後一個參數,而不是第一個參數,因為它會產生編譯錯誤,甚至IDE 本身也會告訴我們以下內容:varargs 參數必須是最後一個參數。
public static int summation(int a, int b, int c, int d) { return a + b + c + d; }
總之,如果需要某個實用函數來執行某種類型的具有不定數量參數的操作,並且我們不想明確傳遞數組或列表,則可以考慮使用可變參數函數。這些很有用,它們使程式碼更乾淨、更具可擴展性,並且避免方法重載。
以上是Java 中的可變參數函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JVM'SperformanceIsCompetitiveWithOtherRuntimes,operingabalanceOfspeed,安全性和生產性。 1)JVMUSESJITCOMPILATIONFORDYNAMICOPTIMIZAIZATIONS.2)c提供NativePernativePerformanceButlanceButlactsjvm'ssafetyFeatures.3)

JavaachievesPlatFormIndependencEthroughTheJavavIrtualMachine(JVM),允許CodeTorunonAnyPlatFormWithAjvm.1)codeisscompiledIntobytecode,notmachine-specificodificcode.2)bytecodeisisteredbytheybytheybytheybythejvm,enablingcross-platerssectectectectectross-eenablingcrossectectectectectection.2)

TheJVMisanabstractcomputingmachinecrucialforrunningJavaprogramsduetoitsplatform-independentarchitecture.Itincludes:1)ClassLoaderforloadingclasses,2)RuntimeDataAreafordatastorage,3)ExecutionEnginewithInterpreter,JITCompiler,andGarbageCollectorforbytec

JVMhasacloserelationshipwiththeOSasittranslatesJavabytecodeintomachine-specificinstructions,managesmemory,andhandlesgarbagecollection.ThisrelationshipallowsJavatorunonvariousOSenvironments,butitalsopresentschallengeslikedifferentJVMbehaviorsandOS-spe

Java實現“一次編寫,到處運行”通過編譯成字節碼並在Java虛擬機(JVM)上運行。 1)編寫Java代碼並編譯成字節碼。 2)字節碼在任何安裝了JVM的平台上運行。 3)使用Java原生接口(JNI)處理平台特定功能。儘管存在挑戰,如JVM一致性和平台特定庫的使用,但WORA大大提高了開發效率和部署靈活性。

JavaachievesPlatFormIndependencethroughTheJavavIrtualMachine(JVM),允許Codetorunondifferentoperatingsystemsswithoutmodification.thejvmcompilesjavacodeintoplatform-interploplatform-interpectentbybyteentbytybyteentbybytecode,whatittheninternterninterpretsandectectececutesoneonthepecificos,atrafficteyos,Afferctinginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginging

JavaispoperfulduetoitsplatFormitiondence,對象與偏見,RichstandardLibrary,PerformanceCapabilities和StrongsecurityFeatures.1)Platform-dimplighandependectionceallowsenceallowsenceallowsenceallowsencationSapplicationStornanyDevicesupportingJava.2)

Java的頂級功能包括:1)面向對象編程,支持多態性,提升代碼的靈活性和可維護性;2)異常處理機制,通過try-catch-finally塊提高代碼的魯棒性;3)垃圾回收,簡化內存管理;4)泛型,增強類型安全性;5)ambda表達式和函數式編程,使代碼更簡潔和表達性強;6)豐富的標準庫,提供優化過的數據結構和算法。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。