我在oracle trail的卡片示例中遇到了这一行:
public Cards[][] cards =new Cards[int suits][int ranks];
尽管偏离了:
,但没有给出任何解释Cards cards=new Cards(int suits,int ranks);
对我来说这是一个新概念。有人请解释2D数组或给我链接到解释这样一个实例的页面?
答案 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);
初始化每个单元格,以便能够访问该单元格中的卡片。 (其中i
和j
在数组边界内)
第二行是类Cards
的单个实例的创建。您传递的suits
和ranks
参数是由于类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 suits
和int ranks
将替换为正确的值)。创建此对象后,它可以存储在我们定义的2D数组中:
cards[0][0] = c;
此声明会将c
类型的对象Cards
放在我们国际象棋棋盘的左上角字段中。
总结一下,2D数组基本上是一个数据容器(如List
),它可以存储给定类型的对象。