複習筆記14 數組

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}};
	}
}

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