1. 程式人生 > >Java陣列知識整理

Java陣列知識整理

一、陣列的概念

陣列是相同資料型別元素的集合。

陣列本身是引用資料型別,但它可以儲存基本資料型別和引用資料型別。

二、陣列的宣告

語法一:資料型別[] 陣列名;

語法二:資料型別 陣列名[];

三、陣列的建立

兩個要素:資料型別、長度。

語法一:資料型別[] 陣列名 = new 資料型別[長度];(動態初始化,先定義陣列,然後初始化資料)

語法二:資料型別[] 陣列名 = new 資料型別[]{初始化資料};(靜態初始化,定義陣列的同時,初始化資料)

語法三:資料型別[] 陣列名 = {初始化資料};(靜態初始化)

例:

  1. //定義陣列語法一

  2. @Test

  3. public void test_01(){

  4. int[] arr = new int[3];

  5. System.out.println(arr.length);

  6. }

  7. //定義陣列語法二

  8. @Test

  9. public void test_02(){

  10. int[] arr = new int[]{12,11,10};

  11. System.out.println(arr.length);

  12. }

  13. //定義陣列語法三

  14. @Test

  15. public void test_03(){

  16. int[] arr = {12,11,10};

  17. System.out.println(arr.length);

  18. }

四、陣列的特點

陣列一旦定義,長度不變。

儲存的資料型別相同。

陣列的長度length是屬性。

陣列在記憶體當中處於連續的記憶體空間。

五、訪問陣列元素

訪問陣列元素需要使用索引,陣列的索引從0開始,最大值為陣列的長度減一。

語法:陣列名[索引]

例:

  1. //訪問陣列元素

  2. @Test

  3. public void test_04(){

  4. int[] arr = {11,12,13};

  5. //輸出陣列的第一個元素

  6. System.out.println(arr[0]);

  7. }

六、陣列的遍歷

陣列遍歷就是通過索引獲取陣列中的每個元素。

例:

  1. //for迴圈遍歷陣列

  2. @Test

  3. public void test_05(){

  4. int[] arr = {1,2,3,4,5,6};

  5. for(int i= 0; i < arr.length; i++){

  6. System.out.println(arr[i]);

  7. }

  8. }

  9. //while迴圈遍歷陣列

  10. @Test

  11. public void test_06(){

  12. int[] arr = {1,2,3,4,5,6};

  13. int i = 0;

  14. while(i < arr.length){

  15. System.out.println(arr[i]);

  16. i++;

  17. }

  18. }

七、陣列中常見的異常

ArrayIndexOutOfBoundsException:陣列索引越界異常。

NullPointerException:空指標異常。

八、獲取陣列中的最大值

例:

  1. //獲取陣列中的最大值

  2. @Test

  3. public void test_07(){

  4. int[] arr = {89,66,8,5,99,3,5,66,78,100};

  5. int max = arr[0];

  6. for (int i = 1; i < arr.length; i++){

  7. if(arr[i] > max){

  8. max = arr[i];

  9. }

  10. }

  11. System.out.println("陣列中的最大值為:"+max);

  12. }

九、陣列的逆序

原理:首尾元素兩兩交換。

逆序不等於反向遍歷。

例:

  1. //陣列的逆序

  2. @Test

  3. public void test_13(){

  4. //定義陣列

  5. int[] arr = {1,2,3,4,5};

  6. int temp;

  7. for(int i = 0;i <=(arr.length/2); i++){

  8. temp = arr[i];

  9. //陣列的長度比索引大1,所以要減去1

  10. arr[i] = arr[arr.length-1-i];

  11. arr[arr.length-1-i] = temp;

  12. }

  13. //遍歷輸出逆序後的陣列

  14. for (int i = 0; i < arr.length;i++){

  15. System.out.println(arr[i]);

  16. }

  17. }

十、二維陣列的宣告

語法:資料型別[][] 陣列名;

十一、二維陣列的建立

語法一:資料型別[][] 陣列名 = new int[二維陣列的長度][一維陣列的長度];

語法二:資料型別[][] 陣列名 = new int[二維陣列的長度][];(此種方式定義的一維陣列需要另外分配長度,其長度可以不相同)

語法三:資料型別[][] 陣列名 = new int[][]{{初始化資料},{初始化資料}};(每一對花括號是一個一維陣列,使用逗號分割。此種方式定義的一維陣列的長度可以不相同)

例:

  1. //二位陣列的建立方式一

  2. @Test

  3. public void test_08(){

  4. int[][] arr = new int[3][5];

  5. //輸出二位陣列的長度

  6. System.out.println(arr.length);

  7. //輸出第一個一維陣列的長度

  8. System.out.println(arr[0].length);

  9. }

  10. //二位陣列的建立方式二

  11. @Test

  12. public void test_09(){

  13. int[][] arr = new int[3][];

  14. arr[0] = new int[5]; //給第一個一維陣列分配大小

  15. arr[1] = new int[6]; //給第二個一維陣列分配大小

  16. //輸出二位陣列的長度

  17. System.out.println(arr.length);

  18. //輸出第一個一維陣列的長度

  19. System.out.println(arr[0].length);

  20. //輸出第二個一維陣列的長度

  21. System.out.println(arr[1].length);

  22. }

  23. //二位陣列的建立方式三

  24. @Test

  25. public void test_10(){

  26. int[][] arr = new int[][]{{10,11,12},{10,11,12,13}};

  27. //輸出二位陣列的長度

  28. System.out.println(arr.length);

  29. //輸出第一個一維陣列的長度

  30. System.out.println(arr[0].length);

  31. //輸出第二個一維陣列的長度

  32. System.out.println(arr[1].length);

  33. }

十二、通過索引訪問二維陣列中的資料

語法:陣列名[二維陣列的索引][一維陣列的索引]

例:

  1. //訪問陣列中的元素

  2. @Test

  3. public void test_11(){

  4. int[][] arr = new int[][]{{10,20},{50,66}};

  5. //輸出第二個一維陣列中的第一個元素

  6. System.out.println(arr[1][0]);

  7. }

十三、二維陣列的遍歷

思路:for迴圈的巢狀,外層迴圈遍歷二維陣列,內層迴圈遍歷一維陣列。

例:

  1. //for迴圈遍歷二維陣列

  2. @Test

  3. public void test_12(){

  4. int[][] arr = new int[][]{{1,2,3},{4,5,6},{7,8,9}};

  5. //外層迴圈遍歷二維陣列

  6. for(int i = 0; i < arr.length; i++){

  7. //內層迴圈遍歷一維陣列

  8. for (int j = 0; j < arr[i].length; j++){

  9. //輸出每次遍歷所獲取的元素

  10. System.out.println(arr[i][j]);

  11. }

  12. }

  13. }

十四、選擇排序

原理:陣列中的每個元素和其他的元素比較大小,根據排序要求交換位置。

思路:使用for的巢狀迴圈。外層迴圈控制比較次數,內迴圈控制每次比較的元素。

例:

  1. //選擇排序

  2. @Test

  3. public void test_14(){

  4. //定義一維陣列

  5. int[] arr = {56,98,36,33,88,77,88,4,6,99};

  6. //最後剩餘的一個元素不用比較,所以要減1

  7. for (int i = 0; i < arr.length - 1; i++){

  8. for (int j = 1+i; j < arr.length; j++){

  9. if(arr[i] > arr[j]){

  10. int temp = arr[i];

  11. arr[i] = arr[j];

  12. arr[j] = temp;

  13. }

  14. }

  15. }

  16. //遍歷輸出陣列元素

  17. for (int i = 0; i < arr.length;i++){

  18. System.out.print(arr[i]+" ");

  19. }

  20. }

十五、氣泡排序

原理:每輪冒泡,陣列中相鄰元素兩兩比較,根據排序要求交換位置。外層迴圈控制冒泡的次數,內層迴圈控制每次比較的元素。

例:

  1. //氣泡排序

  2. @Test

  3. public void test_15(){

  4. //定義一維陣列

  5. int[] arr = {88,66,23,44,5,6,77,99,52,-9};

  6. for (int i = 0; i < arr.length-1; i++){

  7. for (int j = 0; j < arr.length-i-1; j++){

  8. if(arr[j] > arr[j+1]){

  9. int temp = arr[j];

  10. arr[j] = arr[j+1];

  11. arr[j+1] = temp;

  12. }

  13. }

  14. }

  15. //遍歷輸出陣列元素

  16. for (int i = 0; i < arr.length;i++){

  17. System.out.print(arr[i]+" ");

  18. }

  19. }