十六、java版 SpringCloud分散式微服務雲架構之Java 陣列
Java 陣列
陣列對於每一門程式語言來說都是重要的資料結構之一,當然不同語言對陣列的實現及處理也不盡相同。需要框架原始碼的朋友可以看我個人簡介聯絡我,推薦分散式架構
Java 語言中提供的陣列是用來儲存固定大小的同類型元素。
你可以宣告一個數組變數,如 numbers[100] 來代替直接宣告 100 個獨立變數 number0,number1,....,number99。
本教程將為大家介紹 Java 陣列的宣告、建立和初始化,並給出其對應的程式碼。
宣告陣列變數
首先必須宣告陣列變數,才能在程式中使用陣列。下面是宣告陣列變數的語法:
1 2 3 4 5 |
dataType[]arrayRefVar; //首選的方法
或
dataTypearrayRefVar[]; //效果相同,但不是首選方法
|
注意:建議使用dataType[] arrayRefVar的宣告風格宣告陣列變數。 dataType arrayRefVar[] 風格是來自 C/C++ 語言 ,在Java中採用是為了讓 C/C++ 程式設計師能夠快速理解java語言。
例項
下面是這兩種語法的程式碼示例:
1 2 3 4 5 |
double []myList; //首選的方法
或
double myList[]; //效果相同,但不是首選方法
|
建立陣列
Java語言使用new操作符來建立陣列,語法如下:
1 |
arrayRefVar= new dataType[arraySize];
|
上面的語法語句做了兩件事:
- 一、使用 dataType[arraySize] 建立了一個數組。
- 二、把新建立的陣列的引用賦值給變數 arrayRefVar。
陣列變數的宣告,和建立陣列可以用一條語句完成,如下所示:
1 |
dataType[]arrayRefVar= new dataType[arraySize];
|
另外,你還可以使用如下的方式建立陣列。
1 |
dataType[]arrayRefVar={value0,value1,...,valuek};
|
陣列的元素是通過索引訪問的。陣列索引從 0 開始,所以索引值從 0 到 arrayRefVar.length-1。
例項
下面的語句首先聲明瞭一個數組變數 myList,接著建立了一個包含 10 個 double 型別元素的陣列,並且把它的引用賦值給 myList 變數。
TestArray.java 檔案程式碼:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
public class TestArray{
public static void main(String[]args){
//陣列大小
int size= 10 ;
//定義陣列
double []myList= new double [size];
myList[ 0 ]= 5.6 ;
myList[ 1 ]= 4.5 ;
myList[ 2 ]= 3.3 ;
myList[ 3 ]= 13.2 ;
myList[ 4 ]= 4.0 ;
myList[ 5 ]= 34.33 ;
myList[ 6 ]= 34.0 ;
myList[ 7 ]= 45.45 ;
myList[ 8 ]= 99.993 ;
myList[ 9 ]= 11123 ;
//計算所有元素的總和
double total= 0 ;
for ( int i= 0 ;i<size;i++){
total+=myList[i];
}
System.out.println( "總和為:" +total);
}
}
|
以上例項輸出結果為:
1 |
總和為: 11367.373
|
下面的圖片描繪了陣列 myList。這裡 myList 數組裡有 10 個 double 元素,它的下標從 0 到 9。
處理陣列
陣列的元素型別和陣列的大小都是確定的,所以當處理陣列元素時候,我們通常使用基本迴圈或者 For-Each 迴圈。
示例
該例項完整地展示瞭如何建立、初始化和操縱陣列:
TestArray.java 檔案程式碼:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
public class TestArray{
public static void main(String[]args){
double []myList={ 1.9 , 2.9 , 3.4 , 3.5 };
//列印所有陣列元素
for ( int i= 0 ;i<myList.length;i++){
System.out.println(myList[i]+ "" );
}
//計算所有元素的總和
double total= 0 ;
for ( int i= 0 ;i<myList.length;i++){
total+=myList[i];
}
System.out.println( "Totalis" +total);
//查詢最大元素
double max=myList[ 0 ];
for ( int i= 1 ;i<myList.length;i++){
if (myList[i]>max)max=myList[i];
}
System.out.println( "Maxis" +max);
}
}
|
以上例項編譯執行結果如下:
1 2 3 4 5 6 |
1.9
2.9
3.4
3.5
Totalis 11.7
Maxis 3.5
|
For-Each 迴圈
JDK 1.5 引進了一種新的迴圈型別,被稱為 For-Each 迴圈或者加強型迴圈,它能在不使用下標的情況下遍歷陣列。
語法格式如下:
1 2 3 4 5 6 |
1.9
2.9
3.4
3.5
Totalis 11.7
Maxis 3.5
|
例項
該例項用來顯示陣列 myList 中的所有元素:
TestArray.java 檔案程式碼:
1 2 3 4 5 6 7 8 9 10 |
public class TestArray{
public static void main(String[]args){
double []myList={ 1.9 , 2.9 , 3.4 , 3.5 };
//列印所有陣列元素
for ( double element:myList){
System.out.println(element);
}
}
}
|
以上例項編譯執行結果如下:
1 2 3 4 |
1.9
2.9
3.4
3.5
|
陣列作為函式的引數
陣列可以作為引數傳遞給方法。
例如,下面的例子就是一個列印 int 陣列中元素的方法:
1 2 3 4 5 |
public static void printArray( int []array){
for ( int i= 0 ;i<array.length;i++){
System.out.print(array[i]+ "" );
}
}
|
下面例子呼叫 printArray 方法打印出 3,1,2,6,4 和 2:
1 |
printArray( new int []{ 3 , 1 , 2 , 6 , 4 , 2 });
|
陣列作為函式的返回值
1 2 3 4 5 6 7 8 |
public static int []reverse( int []list){
int []result= new int [list.length];
for ( int i= 0 ,j=result.length- 1 ;i<list.length;i++,j--){
result[j]=list[i];
}
return result;
}
|
以上例項中 result 陣列作為函式的返回值。
多維陣列
多維陣列可以看成是陣列的陣列,比如二維陣列就是一個特殊的一維陣列,其每一個元素都是一個一維陣列,例如:
1 |
String[][]str= new String[ 3 ][ 4 ];
|
多維陣列的動態初始化(以二維陣列為例)
1. 直接為每一維分配空間,格式如下:
1 |
type[][]typeName= new type[typeLength1][typeLength2];
|
type 可以為基本資料型別和複合資料型別,typeLength1 和 typeLength2 必須為正整數,typeLength1 為行數,typeLength2 為列數。
例如:
1 |
int [][]a= new int [ 2 ][ 3 ];
|
解析:
二維陣列 a 可以看成一個兩行三列的陣列。
2. 從最高維開始,分別為每一維分配空間,例如:
1 2 3 4 5 6 7 8 |
String[][]s= new String[ 2 ][];
s[ 0 ]= new String[ 2 ];
s[ 1 ]= new String[ 3 ];
s[ 0 ][ 0 ]= new String( "Good" );
s[ 0 ][ 1 ]= new String( "Luck" );
s[ 1 ][ 0 ]= new String( "to" );
s[ 1 ][ 1 ]= new String( "you" );
s[ 1 ][ 2 ]= new String( "!" );
|
解析:
s[0]=new String[2]和s[1]=new String[3]是為最高維分配引用空間,也就是為最高維限制其能儲存資料的最長的長度,然後再為其每個陣列元素單獨分配空間s0=new String("Good")等操作。
多維陣列的引用(以二維陣列為例)
對二維陣列中的每個元素,引用方式為arrayName[index1][index2],例如:
1 |
num[ 1 ][ 0 ];
|
Arrays 類
java.util.Arrays 類能方便地運算元組,它提供的所有方法都是靜態的。
具有以下功能:
- 給陣列賦值:通過 fill 方法。
- 對陣列排序:通過 sort 方法,按升序。
- 比較陣列:通過 equals 方法比較陣列中元素值是否相等。
- 查詢陣列元素:通過 binarySearch 方法能對排序好的陣列進行二分查詢法操作。
具體說明請查看下錶: