5
我一直在测试一些不同的方式来乘以一个常量数组的项目。Java数组循环行为
我也取决于产生不同的结果如何我遍历数组,我无法理解这一点(我是相当新的Java和仍然让我周围的事物,如何传递或引用头)。
测试1
int[] array = {1, 2, 3, 4};
for (int number : array)
{
number *= 2;
}
从而造成未修改的数组项:
{1, 2, 3, 4}
好像number
是不实际的数组元素,但被初始化它一个新的int
的价值。那是对的吗?
试验2
我认为,通过使用对象可能工作的阵列,假设number
然后到实际的数组项的引用。这是我在使用Integer
的测试,而不是int
:
Integer[] array = {1, 2, 3, 4};
for (Integer number : array)
{
number *= 2;
}
再次,导致数组项不变:
{1, 2, 3, 4}
测试3
经过一番挠头我尝试了不同的方法循环,例如:
int[] array = {1, 2, 3, 4};
for (int i = 0; i < array.length; i ++)
{
array[i] *= 2;
}
在数组项所得乘以:
{2, 4, 6, 8}
这最后的结果对我来说很有意义,但我不明白,从第二次测试的结果(或第一为此事)。到现在为止,我一直认为测试1和测试2中使用的循环只是测试3中使用的循环的简写版本,但它们明显不同。
为什么没有这方面的工作如我所料?为什么这些循环不同?
,你正在做的像阵列[0] = array [0] * 2;即你用新的相乘值替换数组。 – 2014-09-05 04:04:36
跟我说说 - Java是通过价值传递的。 Java是通过价值传递的。 Java是通过价值传递的。 – csmckelvey 2014-09-05 04:39:16