我一直在测试一些不同的方法来将数组项与常数相乘.
我已经产生了不同的结果,这取决于我如何遍历数组并且我无法理解这一点(我对Java很新,并且仍然关注事物的传递或引用).
测试1
int[] array = {1, 2, 3, 4};
for (int number : array)
{
number *= 2;
}
Run Code Online (Sandbox Code Playgroud)
导致未修改的数组项:
{1, 2, 3, 4}
Run Code Online (Sandbox Code Playgroud)
它似乎number不是实际的数组项,而是一个int用它的值初始化的新项.那是对的吗?
测试2
我认为通过使用一个Object数组可能会起作用,假设它number是对实际数组项的引用.以下是我使用的测试Integer而不是int:
Integer[] array = {1, 2, 3, 4};
for (Integer number : array)
{
number *= 2;
}
Run Code Online (Sandbox Code Playgroud)
同样,导致数组项未经修改:
{1, 2, 3, 4}
Run Code Online (Sandbox Code Playgroud)
测试3
经过一些头部刮擦后,我尝试了一种不同的循环方法,如下所示:
int[] array = {1, 2, 3, 4};
for (int i = 0; i < array.length; i ++)
{ …Run Code Online (Sandbox Code Playgroud)