java类实例化为2d数组

时间:2014-04-01 08:48:09

标签: java

我在oracle trail的卡片示例中遇到了这一行:

public Cards[][] cards =new Cards[int suits][int ranks];

尽管偏离了:

,但没有给出任何解释
Cards cards=new Cards(int suits,int ranks);

对我来说这是一个新概念。有人请解释2D数组或给我链接到解释这样一个实例的页面?

3 个答案:

答案 0 :(得分:0)

Link  2D数组实际上应该是一个数组数组,它​​接受相同类型的赋值(1D数组)

    int[][] twoD = new int[4][];  
    twoD[0] = new int[1]{1};  
    twoD[1] = new int[2]{2,3};  
    twoD[2] = new int[3]{4,5,6);  
    twoD[3] = new int[4]{7,8,9,10};

答案 1 :(得分:0)

在第一行中,您将创建一个二维维度数组,其中包含卡类的未初始化实例。

每个维度的大小由您在大括号中输入的数字定义(不知道为什么你需要int,甚至编译?)

您需要按cards[i][j] = new Cards(suits, ranks);初始化每个单元格,以便能够访问该单元格中的卡片。 (其中ij在数组边界内)

第二行是类Cards的单个实例的创建。您传递的suitsranks参数是由于类Cards的构造函数定义而不是2d数组的定义(其中大括号中的值定义了大小)数组的每个维度)

答案 2 :(得分:0)

声明

public Cards[][] cards = new Cards[int suits][int ranks];

不会实例化Cards类型的任何新对象。然而,它定义了一个新的2D数组来存储Cards类型的对象。二维数组可以被视为棋盘。在这个棋盘的每个区域(它的大小为suits x ranks),可以放置Cards类型的对象。

另一方面,声明

Cards c = new Cards(int suits,int ranks);

将实例化一个Cards类型的新对象(至少int suitsint ranks将替换为正确的值)。创建此对象后,它可以存储在我们定义的2D数组中:

cards[0][0] = c;

此声明会将c类型的对象Cards放在我们国际象棋棋盘的左上角字段中。

总结一下,2D数组基本上是一个数据容器(如List),它可以存储给定类型的对象。