JAVA數組詳解

最近看了一些關於java數組的資料,在此總結一下:

一、數組的定義和類型:
      數組就是類型相同的數據對象元素集合。簡單的說:就是類型相同的數據存儲在一個容器裏面【注意:Java中的數組是引用類型,即使一個數組中存放的都是基本數據類型,但這個數組類型同樣是引用類型】。
二、數組的聲明和初始化:
     1、  數組的聲明有兩種方式:一種是[]放在類型的後面,另一種是放在變量名的後面。建議使用第一種類型,數組本身就是一種類型,也就是說int[] 是一種類型。第一種也符合Java中變量的聲明規範。
      eg:  int[]  arrayOne;   或   int arrayTwo[];
    2、數組的初始化有兩種方式:
                第一種動態初始化:在數組定義的時候只指定了數組的長度。
                第二種靜態初始化:在定義數組的同時顯示的爲數組元素賦值。
     eg: 
  一維數組的初始化:
   1)   int[] a;   //聲明,沒有初始化


   2)   int[] a=new int[5];   //初始化爲默認值,int型爲0


   3)   int[] a={1,2,3,4,5};   //初始化爲給定值 


   4)   int[] a=new int[]{1,2,3,4,5};   //同(3)  
          int[] a=new int[5]{1,2,3,4,5};   //錯誤,如果提供了數組初始化操作,則不能定義維表達式 


   5)   int[] a;   
         a=new int[5];    //正確,同(2)一樣
         int[] a;
        a={1,2,3,4,5};   //錯誤,數組常量只能在初始化操作中使用,如(3)


  6)   int a[];
        a[0]=1;   //錯誤,因爲數組沒有初始化,不能賦值
        a[1]=2;  
 
 三、數組的長度:
    數組長度在初始化的時候就已經被指定了,數組長度一旦被指定長度,就不能進行修改。也就是說,數組的長度是不可變。

    獲取數組的長度是通過length屬性得到。而不是length()方法。

四、數組的遍歷方法:
    方法一、通過普通的for循環遍歷數組元素
   eg:

int[]  arrayX=new int[]{1,2,3,5,9,10};//定義一個整型數組arrayX
for(int i=0;i<arrayX.lenght;i++){   //循環遍歷數組元素
     System.out.println(arrayX[i]);   //輸出數組中的每一個元素的值。
}
   方法二、通過特殊for循環遍歷數組元素
   eg:
 String[]  arrayStr=new String[]{"aa","bb","cc","dd"}
       for(String str:arrayStr){
          System.out.println(str);
          }

五、多維數組:
    多維數組可以理解爲數組中的數組。Java中數組類型是引用類型,因此,數組變量其實就是一個引用,這個引用指向真實的數組內存。數組元素的類型也可以是引用,如果數組元素的引用再次指向真實的數組內存[Java中允許多維數組當成一維數組處理。初始化多維數組時可以先只初始化最左邊的維數,此時該數組的每個元素都相當於一個數組引用變量,這些元素還需要進一步初始化]。
下面以二維數組爲例:

public static void main(String[] args) {
		//定義一個二維數組
		int[][] array;
		//把二維數組當成一維數組進行初始化,系統默認值是null
		array=new int[4][];
		//把array數組當成一維數組,遍歷array數組中的每一個元素、
		for(int i=0;i<array.length;i++){
			System.out.println(array[i]);
		}
		//初始化array數組的第一個元素
		array[0]=new int[3];
		//給array數組中的第一個元素所指數組的第二個元素賦值
		array[0][1]=12;		
		//array數組的第一個元素是一個一維數組。遍歷該一維數組
		for(int j=0;j<array[0].length;j++){
			System.out.println(array[0][j]);
		}
	}


該實例在內存中示意圖:



二位數組實例:
定義一個二維數組,動態指定數組的行和列的大小,動態給數組賦值,並打印輸出二維數組的元素。

public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		System.out.println("請輸入二維數組行的大小:");
		int row=sc.nextInt();
		int[][] array;
		array=new int[row][];
		for(int i=0;i<array.length;i++){
			System.out.println("請輸入列的大小:");
			int cols=sc.nextInt();
			array[i]=new int[cols];
			for(int j=0;j<array[i].length;j++){
				System.out.println("請輸入第"+(i+1)+"行的第"+(j+1)+"列的值:");
				array[i][j]=sc.nextInt();
			}
		}
		System.out.println("\n\n");
		for(int i=0;i<array.length;i++){
			for(int j=0;j<array[i].length;j++){
				System.out.print(array[i][j]+"  ");
			}
			System.out.println();
		}
	}
  

六、操作數組的工具類:

Java提供的Arrays類裏包含了一些static修飾方法可以直接操作數組,下面簡單的列舉幾個常見的方法:

    1.void sort(type[] a) 該方法對數組a的數組元素進行排序。
    2.void sort(type[] a,int fromIndex,int toIndex):該方法和上面的方法類似,區別在與該方法僅僅對fromIndex到toIndex索引的元素進行排序。
    3.boolean equals(type[] a,type[] b):如果a數組和b數組的長度相等,而且a數組和b數組的數組元素一一相同,該方法返回true。
    4.type[] copyOf(type[] original,int newLength):這個方法將會把original數組複製成一個新數組,其中length是新數組的長度,如果length小於original數組的長度          則新數組就是原數組的前面length個元素;相反,如果length大於original數組的長度,則新數組的前面元素就是原數組的所有元素。後面補充0(數值型)、false(布爾類型)或者null(引用類型)。
    5.String toString(type[] a):該方法將一個數組轉換成一個字符串,該方法按順序把多個數組元素連綴在一起。多個數組元素使用英文逗號和空格隔開。
    6.void fill(type[] a,type val):該方法將會把a數組所有元素值都賦值爲val。
下面是一個簡單的實例:
     
public static void main(String[] args) {
		//定義一個數組a
		int[] a=new int[]{3,4,5,7,6,2};
		//定義一個數組b
		int[] b=new int[]{3,4,5,7,6,2};
		System.out.println("a數組和b數組是否相等:"+Arrays.equals(a, b));
		int[] c=Arrays.copyOf(a, 7);
		System.out.println("a數組和c數組是否相等:"+Arrays.equals(a, c));
		System.out.println("c數組的元素爲:"+Arrays.toString(c));
		//將b數組中的所有元素都賦值爲30
		Arrays.fill(b, 30);
		System.out.println("b數組元素的爲:"+Arrays.toString(b));
		Arrays.sort(a);
		System.out.println("a數組排序後的元素爲:"+Arrays.toString(a));
	}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章