數組,java數組
數組是任何程式設計語言都具有的的資料結構。在java語言中,它是具有相同資料類型的有序的資料的集合,是一種引用資料類型。在數組中,每個變數稱為數組元素,數組元素的資料類型可以是java的任何資料類型(包括基本類型和參考型別)。數組所包含的元素的個數稱為數組的長度,由數組的資料成員length 表示。數組的長度在數組對象建立之後就固定了,不能再發生改變。數組元素的下標是相對於數組第一個元素的位移量,所以第一個元素的下標為0,以此類推,下標值可以是一個整型常量也可以是十一個整型運算式,其取值範圍為0~(數組長度-1)。
數組可以將數組分為:一維數組和多維陣列。
1.一維數組
1.一維數組的聲明
在java語言中,通常可以使用兩種方式聲明一維數組,文法如下:
資料類型[] 數組名;
或
資料類型 數組名[];
註:1.資料類型可以是任何資料類型;如 double、int、char、boolean、類和String數組。
2.數組名是合法的標識符
3.方括弧[] 表示定義的是一個數組,而不是普通的一個變數或對象,有幾個[]就表示是幾維數組。
4.方括弧[] 裡面不能有數字。因為數組的長度不是在聲明時指定的,而是在建立時由所開闢的記憶體單元數目確定的。
聲明數群組類型的變數並沒有真正的建立數組,只是給出了陣列變數的名字和元素的資料類型,由於數組是引用資料類型,所以此時數組引用的值是null,表示沒有指向堆記憶體的任何對象。
2.一維數組的建立
聲明完數組後,要想真正的使用數組,還必須為數組分配記憶體空間,即建立數組(也叫做執行個體化數組)。建立數組使用關鍵字new ,文法如下:
數組名 = new 數群組類型[n];
註:n 表示所建立的數組元素的個數。
數組的聲明和建立也可以採取下述文法格式一步完成。
資料類型[] 數組名 = new 資料類型[n];
或
資料類型 數組名[] = new 資料類型[n];
用new 關鍵字為一個數組分配記憶體空間後,系統將為每個數組元素賦予一個預設值,這個預設值取決於數組元素的類型。參考型別的數組在建立時元素的預設值為null。
註:數組一旦建立後,其長度不能改變。
3.一維數組的初始化
數組的初始化就是不希望使用系統賦予的預設初始值,自行給數組元素賦初值。數組的初始化分為靜態初始化和動態初始化兩種。
1.靜態初始化
靜態初始化是指在定義數組的同時就為數組元素分配空間並賦值,這種方式通常於數組元素個數不多的情況,文法如下:
資料類型[] 數組名 = {元素1,元素2,......,元素n};
或
資料類型 數組名[] = {元素1,元素2,......,元素n};
上面的初始化中,雖然沒有指定數組的長度,但給出了初值個數,這時,系統會自動根據所給的初值個數計算出數組的長度,並根據資料類型分配相應的空間。
2.動態初始化
動態初始化是指數組的聲明與數組分配空間和賦值的操作分開進行。
樣本:
public class Test{public static void main(String[] args){int[] a = new int[5];//初始化數組for(int i = 0;i<a.length;i++){a[i] = i;}//列印數組元素for(int i = 0;i<a.length;i++){System.out.println("a[ "+i+"]="+a[i]);}}}
4.一維數組的使用
當定義了一個一維數組,並用new運算子為其分配完記憶體空間後,就可以通過數組名和下標來引用數組中的每個元素了。一維數組元素引用的文法如下:
數組名 [index];
註:index表示數組元素的下標,是整型的常量或運算式,從0開始,取值範圍0~(數組長度-1)
樣本:隨機產生10個1~100的數字,並求出最大最小值
public class Test{public static void main(String[] args){int[] a = new int[10];//for(int i = 0;i<a.length;i++){a[i] = (int)(Math.random()*100)+1;}System.out.println("這十個隨機數為:");for(int i = 0;i<a.length;i++){System.out.println(a[i]+" ");}System.out.println();int max = a[0];int min = a[0];for(int i = 1;i<a.length;i++){if(a[i]>max)max = a[i];if(a[i]<min)min = a[i];}System.out.println("max="+max);System.out.println("min="+min);}}
註:Math類位於java.lang包下,可以直接使用,不需要匯入。該類中包含用於執行基本數學運算的方法和常量,如初等指數、對數、平方根、三角函數和常量PI等。
選擇排序樣本:
public class Test{public static void selectSort(int[] b){for(int i = 0;i<b.length;i++){int k = i;//變數K用來儲存數組中未排序元素值的最小的下標for(int j = i+1;j<b.length;j++){if(b[k]>b[j]){k=j;}}if(k!=i){int temp = b[i];b[i] = b[k];b[k] = temp;}}}public static void main(String args[]){int[] a = {1,4,2,5,7,6,3,9,8}; //靜態初始化數組selectSort(a);//將數組A作為方法的參數,傳遞的實際是該數組對象的的控制代碼for(int i=0;i<a.length;i++){System.out.print(a[i]+" ");}}}
2.多維陣列
java語言不支援多維陣列,但是一個數組元素可以被聲明為任何資料類型,因而其元素也可以是數群組類型。多維陣列可以看做是數組的數組。一二維數組為例,二維數組可看成是一個特殊的一維數組,其每個元素都是一個一維數組。
1.二維數組的聲明
二維數組的聲明方式和一維數組一樣,也有兩種方式,文法如下:
資料類型[][] 數組名;
或
資料類型 數組名[][];
註:1.資料類型可以是任何資料類型,包括基本類型和參考型別。
2.數組名是合法的標識符。
3.兩個方括弧 [] 表明的是二維數組,前面的方括弧表示行,後面的方括弧表示列。
4.兩個方括弧 []裡面不能有數字,因為數組的長度不是在聲明時指定的。
2.二維數組的建立
聲明二維數群組類型的變數並沒有真正建立二維數組,想要真正使用二維數組,還必須為其分配記憶體空間,即建立二維數組(也叫執行個體化二維數組)。建立二維數組的關鍵字new,文法如下:
數組名 = new 數群組類型[n][m];
註:1.n 表示所建立的二維數組的行數
2.m 表示所建立的二維數組的列數。
3.n必須存在,m可以存在也可以不存在。
二維數組的聲明和建立也可以採取下述文法格式一步完成。
資料類型[][] 數組名 = new 資料類型[n][m];
或
資料類型 數組名[][] = new 資料類型[n][m];
3.二維數組的初始化
1.靜態初始化
靜態初始化是指在定義二維數組時就為數組元素分配空間並賦值,這種方式通常用於數組元素個數不多的情況。
對於靜態初始化,不必給出二維數組每一堆的大小,系統會根據給出的初始值的個數自動計算出數組每一堆的大小。
2.動態初始化
動態初始化是指二維數組的聲明與二維數組分配空間和賦值的操作分開進行。
4.二維數組的使用
文法如下:
數組名[index1][index2];
樣本:
public class Test{public static void main(String args[]){int[][] a = {{2,3,7},{1,4,6}};int[][] b = {{3,4,5,2},{2,7,1,6},{4,3,8,1}};int[][] c = new int[2][4];for(int i = 0;i<2;i++){for(int j = 0;j<4;j++){c[i][j] = 0;for(int k = 0;k<3;k++){c[i][j] += a[i][k]*b[k][j];}}System.out.println("矩陣A為:");for(int i = 0;i<a.length;i++){for(int j = 0;j<a[i].length;j++){System.out.println(a[i][j]+" ");}System.out.println();}System.out.println("矩陣B為:");for(int i = 0;i<b.length;i++){for(int j = 0;j<b[i].length;j++){System.out.println(b[i][j]+" ");}System.out.println();System.out.println("矩陣A與B的乘積C矩陣為:");for(int i = 0;i<c.length;i++){for(int j = 0;j<c[i].length;j++){System.out.println(c[i][j]+" ");}System.out.println();}}}