import java.util.Arrays;
public class Test15
{
public static void main(String[] args)
{
//如果以此種方式創建數組,則必須定義數組長度
int[] arr = new int[3];
//這種方式的創建,不限制長度,以你聲明的元素
//個數決定長度
int[] arr$1 = new int[]{1,2,3};
//這種聲明方式是上一個方式的便捷寫法
int[] arr$2 = {1,2,3};
//常數聲明只能用在數組初始化上,這種賦值的方式
//是會編譯錯誤的
int[] arr$3 = new int[3];
// arr$3 = {1,2,3};
//這樣算是種初始化方式,不過略顯麻煩
arr$3[0] = 0;
arr$3[1] = 0;
arr$3[2] = 0;
//對於給數組中所有元素賦值成一樣的值,api提供支持
//雖然不如自己寫個for了。。。爲了代碼美觀
Arrays.fill(arr$3, 0);
//多維數組,允許先聲明最高維度的長度
int[][] arr_2 = new int[3][];
int[][][] arr_3 = new int[3][3][];
//這種的聲明方式是錯誤的,因爲高維度的數組
//還是未被聲明的
// int[][][] arr_4 = new int[][][3];
//有點聯繫吧,但也不絕對
int[][] arr_5 = {{1,2},{3,4}};
int[] arr_6 = {1,2,3,4};
//二維數組轉化成一維數組
for (int i = 0; i < arr_6.length; i++)
{
arr_6[i] = arr_5[i % 2][i / 2];
}
//一維數組轉化成二維數組
for (int i = 0; i < arr_5.length; i++)
{
for (int j = 0; j < arr_5[0].length; j++)
{
arr_5[i][j] = arr_6[i * 2 + j];
}
}
//由於上邊的方式不是很科學,因爲如果二維數組裏的
//每個一維數組長度不固定呢?比如arr5這個數組,
//12,34可以吧,1,234 這樣也行吧? 123,4,這也可以
//所以內循環的邊界應該根據當前的內部數組的長度來定
for (int i = 0; i < arr_5.length; i++)
{
for (int j = 0; j < arr_5[i/*關鍵點是這個i*/].length; j++)
{
arr_5[i][j] = arr_6[i * 2 + j];
}
}
//雖然多維數組也是一維數組實現的,但有些情況下並不
//等價,比如下面這個,裏邊的一維數組長度不固定,
//並且其中還有一個是null,這樣就沒辦法跟一維數組
//建立聯繫,因爲根本不知道其中這個null的一維數組的長度
int[][] arr_7 = {{1,2},{1,2,3,4,5},null,{1}};
}
}
複習筆記14 數組
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.