Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建新的int[]数组或使用循环将每个索引设置为0?JAVA_Java_Arrays - Fatal编程技术网

创建新的int[]数组或使用循环将每个索引设置为0?JAVA

创建新的int[]数组或使用循环将每个索引设置为0?JAVA,java,arrays,Java,Arrays,我正在用java制作一个yahtzee游戏,我有一个名为frequencyCount的变量,这个变量是一个数组,用来跟踪每个人的死亡人数。我在每次滚动后重置这个数组,并使用for循环将每个索引设置为0 for(int i = 0; i < frequencyCount.length; i++) { frequencyCount[i] = 0; } 重置方法将在每场比赛中对每个玩家调用45次 哪条路最好?继续创建新数组是一个问题,还是因为这是一个小游戏而无关紧要?两种方法几乎相同,

我正在用java制作一个yahtzee游戏,我有一个名为frequencyCount的变量,这个变量是一个数组,用来跟踪每个人的死亡人数。我在每次滚动后重置这个数组,并使用for循环将每个索引设置为0

for(int i = 0; i < frequencyCount.length; i++) {
    frequencyCount[i] = 0;
}
重置方法将在每场比赛中对每个玩家调用45次


哪条路最好?继续创建新数组是一个问题,还是因为这是一个小游戏而无关紧要?

两种方法几乎相同,new int[]也使用for loop使它们都为零(优化),但会抛出旧数组并使GC工作,因此两种方法几乎相同

两种方法几乎相同,new int[]还使用for循环使所有这些都为零(优化),但会抛出旧数组并使GC工作,因此这两种方式几乎完全相同。实际上,您不会看到任何差异,在这种情况下,您不应该太担心性能。专注于保持代码的干净性和可读性,我认为第2种方法更简洁。

在实践中,您不会看到任何差异,在这种情况下,您不应该太担心性能。专注于保持代码的干净性和可读性,我认为第2种方法更简洁。

我同意Dima;两种方法产生相同的结果。我会说使用第二个,因为它需要更少的代码行。当一个阵列足够时,没有必要创建新阵列。

我同意Dima;两种方法产生相同的结果。我会说使用第二个,因为它需要更少的代码行。只要有足够的时间,就不需要创建新的数组。

现代Java虚拟机可以在您不注意的情况下创建数百万个数组。45和6对于计算机来说是很小的数字。99.99999%的时间花在你的程序上,就是什么都不做,等待用户交互。只要没有其他对象引用旧数组,重置它或创建新数组都不会改变任何内容。请注意,您也可以使用
Arrays.fill(frequencyCount,0)(这只会让你省去自己编写循环的麻烦)。@JBNizet它可以创建数百万个小数组,而大数组(数千、数百万个元素)则是另一回事。许多重要的程序并没有花费大部分时间(更不用说99.99999%)等待用户输入。即使是那些这样做的人也可能有延迟限制,这使得优化是值得的。我不是要宽恕过早的优化,但出于正确的原因,我更愿意消除这些顾虑。我建议完全不用使用阵列。使用
List
接口的
ArrayList
实现-它有一个非常方便的
clear()
方法。@delnan:我们在这里讨论45个长度为6的数组的创建,用于Yathzee程序。同样的优化规则不适用于此类程序和低延迟大批量交易应用程序。我的意思是让OP意识到电脑是快的。比他想象的要快得多。一个现代的Java虚拟机可以在你根本没有注意到的情况下创建数百万个数组。45和6对于计算机来说是很小的数字。99.99999%的时间花在你的程序上,就是什么都不做,等待用户交互。只要没有其他对象引用旧数组,重置它或创建新数组都不会改变任何内容。请注意,您也可以使用
Arrays.fill(frequencyCount,0)(这只会让你省去自己编写循环的麻烦)。@JBNizet它可以创建数百万个小数组,而大数组(数千、数百万个元素)则是另一回事。许多重要的程序并没有花费大部分时间(更不用说99.99999%)等待用户输入。即使是那些这样做的人也可能有延迟限制,这使得优化是值得的。我不是要宽恕过早的优化,但出于正确的原因,我更愿意消除这些顾虑。我建议完全不用使用阵列。使用
List
接口的
ArrayList
实现-它有一个非常方便的
clear()
方法。@delnan:我们在这里讨论45个长度为6的数组的创建,用于Yathzee程序。同样的优化规则不适用于此类程序和低延迟大批量交易应用程序。我的意思是让OP意识到电脑是快的。比他想象的要快得多。
frequencyCount = new int[6];