聲明一個數組類型的引用變量,簡稱爲數組變量;java
用new語句構造數組的實例。new語句爲數組分配內存,而且爲數組中的每一個元素賦予默認值;數組
初始化,即爲數組的每一個元素設置合適的初始值。code
1. a)數組變量的聲明; 1) 一個存放同一類型數據的集合 a. 便可以是基本類型,也能夠是對象類型; b. 數組中的每一個數據爲元素; 2) 數組是一個對象,成員是數組長度和數組中的元素; 3) 申明瞭一個數組變量並非建立了一個對象; 4) 申明數組的方式; int[] IArray 或者 int IArray[] 基本數據類型數組,數組中存放的是基本數據類型。 Teacher[] tArray 或者 Teacher tArray[]類數組, 數組中存放的是Teacher類建立的若干個的對象。 注意:1) 聲明數組變量的時侯,不能指定數組的長度,如下聲明方式是非法的。 int x[1]; int[2] x; b)初始化數組 初始化:自變量建立後首次賦值的過程; 建立數組對象;數組對象和其餘Java對象同樣,也用new語句建立; int[] iArray = new int[2]; new語句執行如下步驟: a. 在堆區中爲數組分配內存空間,以上代碼建立了一個包含2個元素的int數組; 每一個元素都是int類型,佔4個字節,所以整個數組對象在內存中佔用8個字節。 b. 爲數組中的每一個元素賦予其數據類型的默認值。 byte/short/int/long 0 float 0.0f double 0.0d String null char '\u0000' boolean false c. 返回數組對象的引用 c)初始化數組對象; 數組中的每一個元素都有一個索引,或者稱爲下標。 數組中的第一個元素的索引爲0,第二個元素的索引爲1, 依次類推。 經過索引能夠訪問數組中的元素或者給數組中元素內容賦值。 1) 聲明、建立、初始化分開: int[] iArray; iArray = new int[2]; iArray[0] = 0; iArray[1] = 1; 2) 聲明、建立的同時並初始化數組; int[] iArray = {0, 1}; Student sArray[] = new Student[] { new Student(「George」, 「Male」, 20), new Student()}; Student[] stArray = { new Student(), new Student()} ; 注意:a. 非法的數組初始化方式: int[] x = new int[5]{5,4,3,2,1};//編譯出錯,不能在[]中指定數組的長度; int[] x; x = {5,4,3,2,1}; //{5,4,3,2,1}必須在聲明數組變量的語句中使用,不能單獨使用
存放一維數組的數組 int[][] a = new int[2][3]; a[0].length; a.length;
數組的長度一旦定義了,就沒法修改。因此須要arraycopy()來從新分配一個新的 數組(擴容),而後將其內容拷貝進去。對象
int[] a = new int[5]; int[] b = new int[5]; a=b與System.arraycopy(a,0,b,0,5)有什麼區別?
/* * @param src the source array. * @param srcPos starting position in the source array. * @param dest the destination array. * @param destPos starting position in the destination data. * @param length the number of array elements to be copied. */ public static native void arraycopy(Object src, int srcPos,Object dest, int destPos,int length);
...
參數的個數可變兩個int相加? public int add(int a,int b){} 三個int相加? public int add(int a,int b,int c){} 四個int相加? public int add(int a,int b,int c,int d){} 五個int相加? public int add(int a,int b,int c,int d,int e){} .......... 上面的方案代碼很是冗餘。相似的代碼重複寫。 jdk1.5以前的解決方案:經過數組解決的 public int add(int[] a){ } add(new int[]{5,8,9}); add(new int[]{5,8}); 缺點:每次都要建立新的數組, 建立數組須要在堆區開闢連續的內存空間。 參數調用以後該變量就沒用了,這樣會 浪費內存空間。 jdk1.5以後的解決方案:經過...解決的 public int add(int... a){ } 調用: add(1,4); add(1,4,6); add(7,6,8,89,76);
注意: 1)可變長參數的使用和數組的使用是同樣。
2)一個方法中只能定義一個可變長參數,而且要定義最後一個參數。索引
歡迎訪問個人騰訊雲+社區:傳送門內存