java可變參數的例子(java可變參數的例子有哪些)

本文目錄一覽:

高級Java什麼是可變參數?

1.5版本的新特性,就是想定義一個方法,但是不知道以後要用的時候想傳幾個參數進去,比如求和,你想定義一個傳幾個int數據都能給你算出和的方法,可以在方法的參數列表中這樣寫(參數類型… 數組名),然後在方法內部直接用操作數組的方式操作。在調用的時候可以隨便傳幾個參數進去,JVM都能將這些數據封裝成一個數組,然後按照方法內的操作進行操作。

舉我上面說的求和的例:

public static int Sum(int… arr){

int sum=0;

for(int i=0;iarr.length-1;i++){

sum+=arr[i];

}

return sum;

}

使用可變參數的一個注意:可變參數的定義,必須是放在參數列表的最後面,否則編譯失敗.

java編程可變參數

將 int sum = 0; 改成 int sum = n1;

class Test{

public static void main(String[] args){

System.out.println(add(2));

System.out.println(add(2,3));

System.out.println(add(2,3,4));

}

public static int add(int n1,int… n){

int sum = n1;

for(int i=0;in.length;i++){

sum = sum+n[i];

}

return sum;

}

}

…的Java中可變參數的符號

在編寫一個方法時,其參數隨着程序運行的條件而變化,在編譯期間無法確定。具體地講,例如編寫一個打印參加聚會party的程序,其中方法printInvitation()將根據作為參數的參加人姓名,打印邀請卡。但這個參數的數量事先並不確定。當然可以編寫許多重載的方法來解決這個問題,如:

void printInvitation(String name);

void printInvitation(String name1, Stringname2);

void printInvitation(String name1, Stringname2, String name3);

問題是編寫多少個重載的方法才可以解決給所有參加者打印邀請卡?也許需要改變您的程序設計,而使用數組或者鏈接表了。

應用可變參數可以方便、靈活地解決這類問題。例如:

void printInvitation(String…names) {

for (String name : names) {

makeCard(name); //調用方法按照姓名打印邀請卡

System.out.println(Recording info: invitation card has been printed for + name);

}

}

這裡,(String…names)便是可變參數。它包括從0到任意個相同類型的參數。在編譯期間,這個可變參數將被轉換為字符串數組形式,即:void printInvitation(String names).

如下是調用這個方法的例子:

printInvitation(李剛, David Smith);

printInvitation(Greg Wu, Paul Nguyen, Liu Wei, 張新);

printInvitation(); //無參數

當在無參數情況下調用這個方法時,將不執行任何這個方法中的代碼。

如下是運行結果:

Recording info: invitation card has been printed for 李剛

Recording info: invitation card has been printed for David Smith

Recording info: invitation card has been printed for Greg Wu

Recording info: invitation card has been printed for Paul Nguyen

Recording info: invitation card has been printed for Liu Wei

Recording info: invitation card has been printed for 張新

如何通過java 反射 調用一個 含有 可變參數的 方法呢 ??

java反射調用可變參數的方法的方式是傳入objects參數,如下代碼:

public class Reflect {

 

    public static void main(String[] args) throws Exception {

        Class? clazz = Single.class;

        Single single = (Single) clazz.newInstance();

        ListString list = new ArrayListString(){

            private static final long serialVersionUID = 1L;

            {

                add(“fuck”);

                add(“ni”);

                add(“mei”);

            }

        };

         

        //獲取method兩種方式, 在method中 數組的的空間大小是可以隨便寫的不一定使用0

        /* 1 */

        Method method = clazz.getDeclaredMethod(“method”, Array.newInstance(Object.class, 0).getClass());

        /* 2 */

        method = clazz.getDeclaredMethod(“method”, (new Object[0]).getClass());

 

 

         

        //初始化參數

        /* 1 */

        Object objs = Array.newInstance(Object.class, 2);

        Array.set(objs, 0, list);

        Array.set(objs, 1, “23”);

        method.invoke(single, objs);

         

        /* 2 */

        Object[] objects = {1, “fuck”, list};

        method.invoke(single, new Object[]{ objects });

    }

}

 

class Single {

    public void method(Object… objs) {

        System.out.println(Arrays.deepToString(objs));

    }

}

 

結果:

[[fuck, ni, mei], 23]

[1, fuck, [fuck, ni, mei]]

java 可變參數是什麼?

java 可變參數是1.5版本的新特性,也就是說用戶若是想定義一個方法,但是在此之前並不知道以後要用的時候想傳幾個參數進去,可以在方法的參數列表中寫參數類型或者數組名,然後在方法內部直接用操作數組的方式操作。

擴展資料

java可變長的形參聲明格式:dataType…parameters。

其中,省略號表示數據類型為dataType的parameters參數個數不固定的,可為任意個。此外,在方法調用時,變長形式參數可被替換成1個、2個或多個參數。在編譯時,方法的變長參數將被看成具有相同類型的一維數組。

在java語言開發中,從JDK1.5以後,java允許定義形參長度可變的參數從而允許為方法指定數量不確定的形參。

參考資料:java形參長度可變方法-百度百科

原創文章,作者:JNT2H,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/130506.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
JNT2H的頭像JNT2H
上一篇 2024-10-03 23:28
下一篇 2024-10-03 23:28

相關推薦

  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • 三星內存條參數用法介紹

    本文將詳細解釋三星內存條上面的各種參數,讓你更好地了解內存條並選擇適合自己的一款。 一、容量大小 容量大小是內存條最基本的參數,一般以GB為單位表示,常見的有2GB、4GB、8GB…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發佈。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Python 常用數據庫有哪些?

    在Python編程中,數據庫是不可或缺的一部分。隨着互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的數據庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變量時顯示的指定變量類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29

發表回復

登錄後才能評論