數組的定義和和內存分配

數組的定義和和內存分配

Java中定義數組的語法有兩種:


 
  1. int[] arr;//第一種

  2. int arr[];//第二種

這兩種形式上沒有區別,使用效果完全一樣。

與C、C++不同,Java在定義數組時並不爲數組元素分配內存空間,因此[]中無需指定數組元素的個數,也就是數組長度。

所以我們需要先分配內存空間,才能訪問數組中的元素。

而想要爲數組分配內存空間可以這樣:


 
  1. int[] arr;//定義一個int數組變量arr

  2. arr=new int[3];//爲int數組變量arr指定數組元素個數爲3,也就時分配內存空間。

也可以這樣寫:

int[] arr=new int[3];//這樣等於在定義int數組變量的時候,爲其分配內存空間。

數組的初始化

可以在聲明數組的同時進行初始化(靜態初始化),也可以在聲明以後進行初始化(動態初始化)。例如:


 
  1. //靜態初始化

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

  3.  
  4. //動態初始化

  5. String[] strArr=new String[3];

  6. strArr[0]="Hello";

  7. strArr[1]="World";

  8. strArr[2]="Hello World";

數組引用

可以通過下標來引用數組:

arrName[index];

與C、C++不同,Java在數組元素引用要進行越界檢查以確保安全性,如果越界,就會拋出數組越界異常(java.lang.ArrayIndexOutOfBoundsException)。

每個數組都有可以拿length屬性來得到數組的長度。

【示例】輸入任意5個整數,輸出它們的和。


 
  1. public class Demo {

  2.  
  3. public static void main(String[] args) {

  4. int[] arr=new int[]{1,2,3,4,5};//定義一個int數組類型的變量arr,併爲其分配內存空間和初始化

  5. int len=arr.length;//得到arr數組的長度

  6. int total=0;//和

  7. //注意,數組下標從0開始,到len-1結束

  8. for(int i=0;i<=len-1;i++){

  9. total+=arr[i];//求和

  10. System.out.print(arr[i]+" ");//根據下標來輸出arr每個變量

  11. }

  12. System.out.println("和爲"+total);

  13.  
  14. }

  15.  
  16. }

數組的遍歷


可以使用for循環來遍歷


 
  1. public class Demo {

  2.  
  3. public static void main(String[] args) {

  4. int[] arr=new int[]{1,2,3,4,5};//定義一個int數組類型的變量arr,併爲其分配內存空間和初始化

  5. int len=arr.length;//得到arr數組的長度

  6. //注意,數組下標從0開始,到len-1結束

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

  8.     System.out.print(arr[i]+" ");//根據下標來輸出arr每個變量

  9. }

  10. }

  11.  
  12. }

不過Java爲我們提供了增強版的for循環(foreach),專門來遍歷數組,語法爲:


 
  1. for( arrayType varName: arrayName ){

  2. // 操作

  3. }

arrayType爲數組類型,varName時用來保存當前元素的變量,每次循環這個變量的值都會改變,arrayName爲數組名。

二維數組

二維數組的聲明,初始化和引用和一維數組相似:


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

  2. int a[ ][ ] = new int[2][3];

  3. a[0][0] = 12;

  4. a[0][1] = 34;

  5. // ......

  6. a[1][2] = 93;

Java語言中,由於把二維數組看作是數組的數組,數組空間不是連續分配的,所以不要求二維數組每一維的大小相同。

例如:


 
  1. int a[ ][ ] = new int[2][ ];

  2. a[0] = new int[3];

  3. a[1] = new int[5];

幾點說明:

  • 上面講的是靜態數組,靜態數組一旦被聲明,它的容量就固定了,不容改變。所以在聲明數組時,一定要考慮數組的最大容量,防止容量不夠的現象。
  • 如果想在運行程序時改變容量,就需要用到Java集合中的ArrayList或者Vector了。
  • 正是由於靜態數組容量固定的缺點,實際開發中使用頻率不高,被ArrayList或Vector代替,因爲實際開發中經常需要向數組中添加或刪除元素,而它的元素不好預估。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章