欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談Java中的可變參數(shù)

 更新時(shí)間:2016年10月01日 10:06:33   投稿:jingxian  
下面小編就為大家?guī)硪黄獪\談Java中的可變參數(shù)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

可變參數(shù)

可變參數(shù)就是一個(gè)方法可以接收任意多個(gè)參數(shù)!例如:fun()、fun(1)、fun(1,1)、fun(1,1,1)。你可能認(rèn)為這是方法重載,但這不是重載,你想想重載能重載多少個(gè)方法,而fun()方法是可以傳遞任何個(gè)數(shù)的參數(shù),你能重載這么多個(gè)方法么?

2.1 定義可變參數(shù)方法

public voidfun(int… arr) {}

上面方法fun()的參數(shù)類型為int…,其中“…”不是省略號(hào),而是定義參數(shù)類型的方式。參數(shù)arr就是可變參數(shù)類型。你可以把上面代碼理解為:public void fun(int[] arr)。

public int sum1(int[] arr) {
    int sum = 0;
    for(int i = 0; i < arr.length; i++) {
      sum += arr[i];
    }
    return sum;
  }

public int sum2(int... arr) {
    int sum = 0;
    for(int i = 0; i < arr.length; i++) {
      sum += arr[i];
    }
    return sum;
  }

你可能會(huì)想,“int[]”和“int…”沒有什么不同,只是“int…”是一種新的定義數(shù)組形參的方式罷了。那么我應(yīng)該恭喜你了!沒錯(cuò),這么理解就對(duì)了!但要注意,只有在方法的形參中可以使用int…來代替int[]。

2.2 調(diào)用帶有可變參數(shù)的方法

sum1()和sum2()兩個(gè)方法的調(diào)用:

sum1(new int[]{1,2,3});
sum2(new int[]{1,2,3});

這看起來沒什么區(qū)別!但是對(duì)于sum2還有另一種調(diào)用方式:

sum2();

sum2(1);

sum2(1,2);

sum2(1,2,3);

這看起來好像是使用任意多個(gè)參數(shù)來調(diào)用sum2()方法,這就是調(diào)用帶有可變參數(shù)方法的好處了。

2.3 編譯器“二次加工”

編譯器對(duì)sum2方法定義的“二次加工”結(jié)果為:

public int sum2(int[] arr) {
    int sum = 0;
    for(int i = 0; i < arr.length; i++) {
      sum += arr[i];
    }
    return sum;
  }

即把“int…”修改為“int[]”類型。

編譯器對(duì)sum2方法調(diào)用的二次加載結(jié)果為:

sum2(new int[0]);
sum2(new int[] {1});
sum2(new int[] {1, 2});
sum2(new int[] {1, 2, 3});

結(jié)論:可變參數(shù)其實(shí)就是數(shù)組類型,只不過在調(diào)用方法時(shí)方便一些,由編譯器幫我們把多個(gè)實(shí)參放到一個(gè)數(shù)組中傳遞給形參。

2.4 可變參數(shù)方法的限制

l  一個(gè)方法最多只能有一個(gè)可變參數(shù);

l  可變參數(shù)必須是方法的最后一個(gè)參數(shù)。

以上就是小編為大家?guī)淼臏\談Java中的可變參數(shù)的全部內(nèi)容了,希望對(duì)大家有所幫助,多多支持腳本之家~

相關(guān)文章

  • 利用ScriptEngineManager實(shí)現(xiàn)字符串公式靈活計(jì)算的方法

    利用ScriptEngineManager實(shí)現(xiàn)字符串公式靈活計(jì)算的方法

    今天小編就為大家分享一篇利用ScriptEngineManager實(shí)現(xiàn)字符串公式靈活計(jì)算的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Mybatis?plugin的使用及原理示例解析

    Mybatis?plugin的使用及原理示例解析

    這篇文章主要為大家介紹了?Mybatis?plugin的使用及原理示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • java數(shù)據(jù)庫連接、查詢、更新等

    java數(shù)據(jù)庫連接、查詢、更新等

    這篇文章主要介紹了java數(shù)據(jù)庫連接、查詢、更新等,需要的朋友可以參考下
    2018-05-05
  • 帶你快速入門掌握Spring的那些注解使用

    帶你快速入門掌握Spring的那些注解使用

    注解是個(gè)好東西,注解是Java語法,被Java編譯器檢查,可以減少配置錯(cuò)誤,這篇文章主要給大家介紹了關(guān)于Spring的那些注解使用的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-02-02
  • JAVA_基本LDAP操作實(shí)例

    JAVA_基本LDAP操作實(shí)例

    這篇文章介紹了JAVA_基本LDAP操作實(shí)例,有需要的朋友可以參考一下
    2013-09-09
  • SpringMVC底層執(zhí)行流程及原理解析

    SpringMVC底層執(zhí)行流程及原理解析

    這篇文章主要介紹了SpringMVC底層執(zhí)行流程及原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 一文搞懂Java的ThreadPoolExecutor原理

    一文搞懂Java的ThreadPoolExecutor原理

    都說經(jīng)典的就是好的,這句話放在Java的ThreadPoolExecutor上那是一點(diǎn)都沒錯(cuò),像現(xiàn)在數(shù)據(jù)庫連接的池化實(shí)現(xiàn),或者像Tomcat這種WEB服務(wù)器的線程管理,處處都有著ThreadPoolExecutor的影子,本篇文章將結(jié)合源碼實(shí)現(xiàn),對(duì)ThreadPoolExecutor的原理進(jìn)行一個(gè)深入學(xué)習(xí)
    2023-06-06
  • SpringBoot項(xiàng)目中配置application.yml中server.port不生效的問題

    SpringBoot項(xiàng)目中配置application.yml中server.port不生效的問題

    這篇文章主要介紹了SpringBoot項(xiàng)目中配置application.yml中server.port不生效的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • spring,mybatis事務(wù)管理配置與@Transactional注解使用詳解

    spring,mybatis事務(wù)管理配置與@Transactional注解使用詳解

    這篇文章主要介紹了spring,mybatis事務(wù)管理配置與@Transactional注解使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Java利用MessageFormat實(shí)現(xiàn)短信模板的匹配

    Java利用MessageFormat實(shí)現(xiàn)短信模板的匹配

    這篇文章主要介紹了Java利用MessageFormat實(shí)現(xiàn)短信模板的匹配,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-06-06

最新評(píng)論