十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
1.數(shù)組初始化
成都創(chuàng)新互聯(lián)公司主營龍馬潭網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都App制作,龍馬潭h5小程序開發(fā)搭建,龍馬潭網(wǎng)站營銷推廣歡迎龍馬潭等地區(qū)企業(yè)咨詢
定義數(shù)組的方式:
int[] arr1; 或 int arr1[];
數(shù)組初始化
通過上邊的定義,我們只是得到了一個數(shù)組的引用。這時已經(jīng)為引用分配了存儲空間,但是還沒有給數(shù)組對象本身分配任何空間。想要給數(shù)組對象分配存儲空間,必須使用初始化表達式。
a.在數(shù)組創(chuàng)建的地方進行初始化,如:
int[] arr1 = {1,2,3,4,5};這種方式等價于使用new來進行存儲空間分配。
b.給數(shù)組的引用賦值,如:
int[] arr1 = {1,2,3,4,5};
int[] arr2;
arr2 = arr1;復(fù)制的只是一個引用。如下圖:

所有的數(shù)組都有一個固定成員length,通過它可以知道數(shù)組元素的個數(shù)。
c.當不確定數(shù)組元素的個數(shù)時的數(shù)組創(chuàng)建
當數(shù)組元素個數(shù)不確定時,我們可以直接使用new在數(shù)組里創(chuàng)建元素。注意new可以應(yīng)用于基本類型的數(shù)組,但是不能應(yīng)用于單個的基本類型。

d.在定義數(shù)組的同時也可以進行初始化,當創(chuàng)建一個非基本類型的數(shù)組時,實際上創(chuàng)建的是引用數(shù)組。
可以用花括號列表的形式來初始化對象數(shù)組,有兩種形式:

2.可變參數(shù)列表
下圖標出了參數(shù)列表的使用方式、格式和對傳入?yún)?shù)的要求。
2.1 列表參數(shù)類型可以不同的情況
可變參數(shù)類型為Object,因為所有的類都直接或間接的繼承自O(shè)bject類,可以向上轉(zhuǎn)型為Object,因此參數(shù)列表中的類型可以不一致。

輸出如下圖:

2.2 列表參數(shù)類型必須相同的情況
當然可變參數(shù)參數(shù)列表也可以作為函數(shù)的一個參數(shù)傳入,如下圖。這里的參數(shù)列表中的參數(shù)類型為string,則所有的參數(shù)必須是string類型,與上面的程序不同。


2.3 可變參數(shù)列表中的參數(shù)可以是任何類型,包括基本類型
下面是可變參數(shù)列表為數(shù)組的例子:


從輸出結(jié)果的最后兩行可知,可變參數(shù)列表實際使用的是基本類型,不依賴自動包裝機制。
2.4 可變參數(shù)列表和自動包裝機制
但是,我們要知道,可變參數(shù)列表和自動包裝機制可以“共處”,如下圖:

2.5 可變參數(shù)列表與函數(shù)重載
可變參數(shù)列表使重載過程變得復(fù)雜:

在上面的所有帶參數(shù)的函數(shù)調(diào)用,編譯器都會使用自動包裝機制來匹配重載的方法,然后調(diào)用最匹配的方法。但是不使用使用參數(shù)來f()時,編譯器會二義性錯誤:
Exception in thread "main" java.lang.Error: Unresolved compilation problem: The method f(Character[]) is ambiguous for the type OverloadingVarargs at thingjinjava.OverloadingVarargs.main(OverloadingVarargs.java:25)
那么,如何解決這個問題呢?
可以嘗試著在某個方法中增加一個非可變參數(shù)來解決該問題。

可是,程序仍然無法通過編譯,還是報上面同樣的錯誤。
但是,當我們在給這兩個函數(shù)都添加一個非可變參數(shù),問題就可以解決了。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!