日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java基础(九) 可变参数列表介绍

發布時間:2025/3/20 编程问答 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java基础(九) 可变参数列表介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、可變參數簡介

在不確定參數的個數時,可以使用可變的參數列表。

1. 語法:

參數類型…(三個點)

例如: void printArray(Object...)

注意: 每個方法最多只有一個可變參數,因為:可變參數必須是方法的最后一個參數

2. 可變參數的類型

可變參數可以設置為任意類型:引用類型,基本類型;當然也會進行類型檢查的;

3. 參數的個數:

  • 0個參數
  • 1個參數: 如果是數組,那么就直接將這個數組作為參數傳進方法里面,不再填充新的數組;
  • 多個參數: 參數可以是數組,也可以是單個變量、常量;但是這時候會,將這些參數填充進新的數組里面,再將這個數組,傳進方法里面;

4. 可變參數的使用

??可變參數完全可以當作一個數組來使用,或者說,本質上可變參數就是一個數組(下面詳細介紹)。所以,數組擁有的方法、屬性,可變參數一樣擁有。

public void varArgMethod(int b,int... arr) {//和數組一樣,擁有屬性lengthint lenth = arr.length;//索引遍歷for(int i=0;i<arr.length;i++) {System.out.println(arr[i]);}//forEach循環遍歷for(int ele:arr) {System.out.println(ele);} }

??上面的例子中,可變參數的使用跟數組的使用是完全一樣,也就是說,可變參數是可以等價成數組的

5. 可變參數的方法重載

可變參數列表的方法的重載不同于普通方法: 無法僅通過改變 可變參數的類型,來重載方法

如:varArray(int... a)、varArray(Object... a),這兩個方法在調用時會出錯,方法重載失敗。

二、 深入分析可變參數的原理

??前面已經很詳細地介紹了可變參數的各個方面。這一小節將深入去了解可變參數的實現原理,特別是為什么可變參數的使用與數組是一樣的。

看下面一個簡單的例子:

public class MyTest{public static void main(String[] args) {int a = 100;varArgMethod(5, 7,8,9,10,a);}public static void varArgMethod(int b,int... arr) {//索引遍歷for(int i=0;i<arr.length;i++) {System.out.println(arr[i]);}}}

例子很簡單,為了了解編譯器是怎么處理的,我們用jad對上面例子的class文件進行反編譯:

public class MyTest {public static void main(String args[]) {int a = 100;varArgMethod(5, new int[]{7, 8, 9, 10, a});//參數列表被編譯器處理成了一個int[]數組}public static transient void varArgMethod(int b, int arr[]) { //形參被編譯器處理成數組for (int i = 0; i < arr.length; i++)System.out.println(arr[i]);} }

??從反編譯的結果可以看出,編譯器不僅將可變參數處理成數組varArgMethod(int b, int arr[]),還處理了調用可變參數方法處的參數列表,把參數列表封裝進一個數組varArgMethod(5, new int[]{7, 8, 9, 10, a})。

??現在看來,可變參數列表并沒有多神奇,只不過是將程序員做的工作簡化了,交給了編譯器來處理。最后,可變參數的使用和數組一樣也就不出奇了,因為可變參數最后還是被編譯器處理成了數組,可變參數就是數組

出處:http://www.cnblogs.com/jinggod/p/8426046.html
文章有不當之處,歡迎指正,你也可以關注我的微信公眾號:好好學java,獲取優質資源。

總結

以上是生活随笔為你收集整理的java基础(九) 可变参数列表介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。