java——與c++之不同——複合類型——數組

數組

  • 不支持c數組,java數組是內置容器類型,因此java數組length運行期確定,非編譯期確定
  • java數組存儲基本類型對象值,存儲類類型對象引用
  • java數組屬於類類型,因此數組元素默認初始化爲0
  • n(n>1)維數組本質是一維數組,只不過數組元素類型爲n-1維數組引用
public class JavaArray
{
    static Random rand = new Random();
    
    static int pRand(int mod)
    {
    	return Math.abs(rand.nextInt()) % mod + 1;
    }
    
    //static int arr_c[3];  //c array
    static int arr_j[];  //java array
    
    public static void array1()
    {
    	int arr1_1[] = new int[3];
    	int arr1_2[] = {1, 2, 3};
    	int arr1_3[] = new int[]{4, 5, 6};
    	
    	int arr2_1[][] = new int[3][4];
    	int arr2_2[][] = {
    		{1, 2, 3},
    		{4, 5, 6},
    	};

    	int arr3_1[][][] = new int[pRand(3)][][];
    	for(int i = 0; i < arr3_1.length; ++i)
    	{
    	    arr3_1[i] = new int[pRand(4)][];
    	    for(int j = 0; j < arr3_1[i].length; ++j)
    	    {
    		arr3_1[i][j] = new int[pRand(5)];
    		for(int k = 0; k < arr3_1[i][j].length; ++k)
    		{
    		    arr3_1[i][j][k] = i + j + k;
    		}
    	    }
    	}

    	for(int i = 0; i < arr3_1.length; ++i)
    	{
    	    for(int j = 0; j < arr3_1[i].length; ++j)
    	    {
    		for(int k = 0; k < arr3_1[i][j].length; ++k)
    		{
    		    System.out.println("arr3_1[" + i + "][" + j + "][" + k + "] = " + arr3_1[i][j][k]);
    		}
    	    }
    	}
    }
    
    public static void array2()
    {
    	Integer arr1_1[] = new Integer[3];
	Integer arr1_2[] = {new Integer(1), new Integer(2), new Integer(3)};
	Integer arr1_3[] = new Integer[]{new Integer(4), new Integer(5), new Integer(6)};
    	
	Integer arr2_1[][] = new Integer[3][4];
	Integer arr2_2[][] = {
    		{new Integer(1), new Integer(2), new Integer(3)},
    		{new Integer(4), new Integer(5), new Integer(6)},
    	};

	Integer arr3_1[][][] = new Integer[pRand(3)][][];
    	for(Integer i = 0; i < arr3_1.length; ++i)
    	{
    	    arr3_1[i] = new Integer[pRand(4)][];
    	    for(int j = 0; j < arr3_1[i].length; ++j)
    	    {
    		arr3_1[i][j] = new Integer[pRand(5)];
    		for(int k = 0; k < arr3_1[i][j].length; ++k)
    		{
    		    arr3_1[i][j][k] = new Integer(i + j + k);
    		}
    	    }
    	}

    	for(int i = 0; i < arr3_1.length; ++i)
    	{
    	    for(int j = 0; j < arr3_1[i].length; ++j)
    	    {
    		for(int k = 0; k < arr3_1[i][j].length; ++k)
    		{
    		    System.out.println("arr3_1[" + i + "][" + j + "][" + k + "] = " + arr3_1[i][j][k]);
    		}
    	    }
    	}
    }
    
    public static void main(String[] args)
    {
    	System.out.println("primitive type: ");
    	array1();
    	System.out.println("class type: ");
    	array2();
    }
}
output:
primitive type: 
arr3_1[0][0][0] = 0
arr3_1[0][0][1] = 1
arr3_1[0][0][2] = 2
arr3_1[0][0][3] = 3
arr3_1[0][1][0] = 1
arr3_1[0][1][1] = 2
arr3_1[0][1][2] = 3
arr3_1[0][1][3] = 4
arr3_1[0][2][0] = 2
arr3_1[0][2][1] = 3
arr3_1[0][2][2] = 4
arr3_1[1][0][0] = 1
arr3_1[1][0][1] = 2
arr3_1[1][0][2] = 3
arr3_1[1][0][3] = 4
arr3_1[1][1][0] = 2
arr3_1[1][2][0] = 3
arr3_1[1][2][1] = 4
arr3_1[1][2][2] = 5
arr3_1[1][2][3] = 6
class type: 
arr3_1[0][0][0] = 0
arr3_1[0][1][0] = 1
arr3_1[0][1][1] = 2
arr3_1[0][1][2] = 3
arr3_1[0][1][3] = 4
arr3_1[0][1][4] = 5
注:arr1_3右值可直接作爲實參傳遞給方法
發佈了244 篇原創文章 · 獲贊 5 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章