Java 從入門到進階之路(五)


之前的文章我們介紹了 Java 的循環結構,本章我們來看一下 Java 的數組

數組對於每一門編程語言來說都是重要的數據結構之一,當然不同語言對數組的實現及處理也不盡相同。

數組

  - 相同數據類型的元素組成的集合

  - 元素按線性順序排列。所謂線性順序是指除第一個元素外,每一個元素都有唯一的前驅元素,除最后一個元素外,每一個元素都有唯一的后繼元素(一個跟一個)

  - 可以通過元素所在的位置的順序號(下標)做標識來訪問每一個元素(下標為0開始,最大到元素個數 -1)

創建數組

 1 public class HelloWorld {
 2     public static void main(String[] args) {
 3         // 第一種:先聲明一個數組變量 arr,然后把新創建的數組的引用賦值給變量 arr
 4         int[] arr;
 5         arr = new int[5];
 6 
 7         // 第二種:數組變量的聲明,和創建數組可以用一條語句完成
 8         int[] arr1 = new int[5];
 9     }
10 }

貼士:在 IDEA 編輯器下輸入fori 然后回車就能生成  for (int i = 0; i < ; i++) { } ,輸入 foreach 然后回車就能生成  for (:) { } 

在上面的代碼中我們聲明了數組 arr,但是並沒有為其賦值,那么系統將會自動為每個數組元素賦值,默認為 0,我們可以對每個元素賦值,也可以在初始化數組的時候賦值,如下代碼:

 1 public class HelloWorld {
 2     public static void main(String[] args) {
 3         // 聲明整型數組變量 arr,
 4         int[] arr = new int[5];
 5         for (int i = 0; i < arr.length; i++) {
 6             // arr 數組默認值為 0
 7             System.out.println(arr[i]); // 0 0 0 0 0
 8         }
 9         
10         // 聲明整型數組變量 arr1,
11         int[] arr1 = new int[5];
12         arr1[0] = 0;
13         arr1[1] = 1;
14         arr1[2] = 2;
15         arr1[3] = 3;
16         arr1[4] = 4;
17         for (int i = 0; i < arr1.length; i++) {
18             // 輸出 arr1 數組值
19             System.out.println(arr1[i]); // 0 1 2 3 4
20         }
21 
22         // 聲明整型數組變量 arr2,arr12 賦值 [0,1,2,3,4]
23         int[] arr2 = {0, 1, 2, 3, 4};
24         for (int i = 0; i < arr2.length; i++) {
25             // 輸出 arr2 數組值
26             System.out.println(arr2[i]); // 0 1 2 3 4
27         }
28     }
29 }

 上面的代碼我們使用 for 循環輸出的數組每一個元素,我們還可以使用 for-each 輸出:

1 public class HelloWorld {
2     public static void main(String[] args) {
3         // 聲明整型數組變量 arr,
4         double[] arr = {0.1, 1.2, 2.3, 3, 4};
5         for(double i : arr){
6             System.out.println(i); // 0.1 1.2 2.3 3.0 4.0
7         }
8     }
9 }

我們也可以將一個數組中的元素復制到另一個數組中去,如下:

 1 public class HelloWorld {
 2     public static void main(String[] args) {
 3         int[] arr1 = {0, 1, 2, 3, 4};
 4         int[] arr2 = new int[5];
 5         /**
 6          * arr1:源數組
 7          * 1:源數組起始下標
 8          * arr2:目標數組
 9          * 0:目標數組的起始下標
10          * 4:要復制的元素的個數
11          * */
12         System.arraycopy(arr1, 1, arr2, 0, 4);
13         for (int i = 0; i < arr2.length; i++) {
14             System.out.println(arr2[i]); // 1 2 3 4 5 0
15         }
16     }
17 }

當然復制是不能超范圍的,例如我們定義 arr2 的 length 為 3,即  int[] arr2 = new int[3]; ,那么要復制的個數已經超過了目標數組的長度,程序就會報錯。

數組的長度在創建后是不可改變的,但是我么可以對其進行擴容,所謂擴容是指創建一個更大的新數組並將其原有數組的內容復制到其中,可以通過  Arrays.copyOf( ) 方法實現。

 1 public class HelloWorld {
 2     public static void main(String[] args) {
 3         int[] arr1 = {0, 1, 2, 3, 4};
 4         // arr1 源數組  arr1.length+1 擴容數組長度
 5         arr1 = Arrays.copyOf(arr1, arr1.length + 1);
 6         for (int i = 0; i < arr1.length; i++) {
 7             System.out.println(arr1[i]); // 0 1 2 3 4 0
 8         }
 9 
10     }
11 }

當然我們也可以歲原有數組進行減容,只需要把 擴容數組長度 小於源數組即可,那么源數組末尾多出的元素將會被去掉。

java 為我們提供了一種簡便的數組排序的方法, Arrays.sort( ) 

 1 public class HelloWorld {
 2     public static void main(String[] args) {
 3         int[] arr = {1,4,5,67,23,3};
 4         Arrays.sort(arr);
 5         for (int i = 0; i < arr.length; i++) {
 6             System.out.println(arr[i]); // 1 3 4 5 23 67
 7         }
 8 
 9     }
10 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM