繁体   English   中英

java类实例化为2d数组

[英]java class instantiated as 2d array

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

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

尽管存在以下差异,但未给出任何解释:

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

对我来说这是一个新概念。 有人请解释2D数组,或者给我链接到解释这种情况的页面?

链接 2D数组,实际上应该是数组的数组,正在为其元素接受相同类型的分配(一维数组)

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

在第一行中,创建Cards类的未初始化实例的二维数组。

每个尺寸的大小由您在花括号中输入的数字定义(不知道为什么在那里需要int ,它甚至可以编译吗?)

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

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

该声明

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

不会实例化Cards类型的任何新对象。 但是,它定义了一个新的2D数组来存储Cards类型的对象。2D数组可以视为棋盘。 在此国际象棋棋盘的每个字段上(大小suits x ranks ),可以放置Cards类型的对象。

另一方面,声明

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

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

cards[0][0] = c;

该语句会将我们类型为Cards对象c放置在棋盘的左上方。

总结起来,二维数组基本上是一个数据容器(如List ),可以存储给定类型的对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM