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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章