Java基礎學習筆記(五)—— 數組
Life was like a box of chocolates, you never know what you’re gonna get.
| @Author:TTODS
一維數組
當數組中每個元素都只帶一個下標時,這種數組就是“一維數組”。數組是引用數據類型,引用數據類型在使用之前一定要做兩件事情:聲明和初始化。
一維數組的聲明
java中變量聲明有兩種方式
int[] nums1; //元素數據類型[] 數組變量名
int nums2[]; //元素數據類型 數組變量名[]
值得注意的是:①在java中給推薦使用第一種方法,因爲其更符合面向對象的思想,將元素數據類型[]
看作是一個整體類型,即數組類型。而後者常用於C等語言的數組聲明。②數組聲明完成後,JVM還沒有給元素分配內存空間。
初始化
數組初始化的過程就是爲數組的每一個元素分配內存空間,併爲每一個元素提供初始值。初始化之後數值的長度就確定下來不能變化了。
值得注意的是:①有些計算機語言雖然提供了可變類型數組,它的長度是可變的,這種數組本質上是創建了一個新的數組對象,並非是原始數組的長度發生了變化
靜態初始化
已知數組的長度及數組中每個元素的值時,可以使用數組的靜態初始化。
int[] nums = {1,2,3,4,5,6,7};//數組的靜態初始化用{value1,value2,value3···}的形式初始化數組。
for(int num:nums) {
System.out.print(num+" ");
}
輸出:
1 2 3 4 5 6 7
動態初始化
用new運算符分配指定長度的內存空間
int[] nums = new int[20]; //爲nums數組 分配可以存放20個int數據的內存空間
nums[0] = 1;
System.out.printf("%6d ",nums[0]);
for(int i=1;i<20;i++) {
nums[i] = 2*nums[i-1];
System.out.printf("%6d ",nums[i]);
if(i==9) System.out.println();
}
輸出
1 2 4 8 16 32 64 128 256 512
1024 2048 4096 8192 16384 32768 65536 131072 262144 524288
值得注意的是:我們用new爲數組分配了內存空間後,在賦值前,數組的元素內容是數組類型的默認值,例如int
類型的默認值是0
int[] nums = new int[20]; //爲nums數組 分配可以存放20個int數據的內存空間
for(int i:nums)
System.out.printf("%3d ",i);
輸出
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
其他類型的默認值如下表:
基本類型 | 默認值 |
---|---|
byte | 0 |
short | 0 |
int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d |
char | ‘\u0000’ |
boolean | false |
引用 | null |
多維數組
多維數組實際上是一維數組的特殊情況,即一維數組的每個元素都是數組。比如二維數組的每個元素都是一個一維數組。
下面以二維數組爲例:
二維數組的聲明:
int[][] intArray0;
int[] intArray1[];
int intArray2[][];
二維數組的初始化:
靜態初始化
//二維數組的靜態初始化
int[][] intArray = {
{1,2,3,4},
{2,3,4,1},
{3,4,1,2},
{4,1,2,3}};
//二維數組的遍歷,注意第一層循環裏元素類型是int[]
for(int[] nums :intArray) {
for(int num:nums)
System.out.printf(" %d ",num);
System.out.println();}
}
輸出:
1 2 3 4
2 3 4 1
3 4 1 2
4 1 2 3
動態初始化
int[][] intArray = new int[4][4];
for(int i =0;i<4;i++) {
for(int j=0;j<4;j++) {
intArray[i][j] = i+j;
System.out.printf(" %d ",intArray[i][j]);
}
System.out.println();
}
輸出:
0 1 2 3
1 2 3 4
2 3 4 5
3 4 5 6
不規則數組
因爲多維數組是數組的數組,但是子數組的長度可以不一樣,於是就有了不規則數組。
int Array[][] = {
{1},
{1,1},
{1,1,1},
{1,1,1,1}};
for(int[] nums:Array) {
for(int num:nums)
System.out.printf(" %d ", num);
System.out.println();
}
輸出
1
1 1
1 1 1
1 1 1 1
用for-each語句遍歷不規則數組是不錯的選擇