gpt4 book ai didi

java - 我需要复制一个卡片数组,但我只得到了我需要复制的数组的地址

转载 作者:行者123 更新时间:2023-11-30 09:31:43 26 4
gpt4 key购买 nike

我需要制作一个我无法直接访问的卡片数组的临时副本,因为它位于另一个名为 Hand 的类中。我得到了一个名为 getHand() 的方法,它返回对数组的引用,我需要在类 RummyHand 中复制它,它是 Hand 的子类。变量 rummyHand 是 RummyHand 类中的一个实例变量,是一个 Hand 对象。如果重要的话,我也在 eclipse 中工作。

但这都不是:

Card[] temp = new Card[8];

temp = rummyHand.getHand();

或者这个:

Card[] temp = rummyHand.getHand();

像我想的那样复制了数组。

最佳答案

您可以使用 Arrays.copyOfSystem.arrayCopy复制一个数组,或者更简单地说,clone():

Card[] temp = rummyHand.getHand().clone();

请注意,使用 = 运算符绝不会复制任何数据。 = 所做的就是让一个变量引用不同的东西。理解这一点很重要,否则会给您带来很多麻烦。

在(希望有用的)细节中:

new Card[8];

创建一个数组:一个新的内存区域,大到足以容纳指向 8 张卡片的指针。

Card[] temp

创建一个必须指向某种卡片数组的变量。

=

在中间使变量指向该内存区域。表达式

rummyHand.getHand();

为您提供不同内存区域的地址。所以行

temp = rummyHand.getHand();

只是让 temp 变量指向那个内存区域。 copyOfarrayCopyclone 都通过创建一个新数组并用原始数组中的引用填充它,然后将新的返回给您来工作数组。

关于java - 我需要复制一个卡片数组,但我只得到了我需要复制的数组的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12801919/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com