大佬教程收集整理的这篇文章主要介绍了为什么此for-each循环不起作用?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
for-each循环不适用于这种情况。您不能使用for-each循环来初始化数组。您的代码:
int[] array = new int[5];
for (int i : array) {
i = 24;
}
将转换为以下内容:
int[] array = new int[5];
for (int j = 0; j < array.length; j++) {
int i = arraY[j];
i = 24;
}
如果这是一个对象数组,它仍然会失败。基本上,for-each依次将集合或数组中的每个条目分配给您提供的变量,然后可以使用该变量。该变量 不 等同于数组引用。它只是一个变量。
For-each不能用于初始化 任何 数组或Collection,因为它遍历数组或Collection的当前内容,一次为您提供每个
。for-each中的变量 不是 数组或Collection引用的代理。编译器不会用“ i
” 替换您的“ ”(来自“ int
i
”)arraY[index]
。
例如,如果您有一个Date数组,请尝试以下代码:
Date[] array = new Date[5];
for (Date d : array) {
d = new Date();
}
将被翻译成这样的东西:
Date[] array = new Date[5];
for (int i = 0; i < array.length; i++) {
Date d = arraY[i];
d = new Date();
}
如您所见,它不会初始化数组。您将最终得到一个包含所有null的数组。
注意:我将上面的代码,将其编译为一个.class
文件,然后使用jad对其进行反编译。此过程为我提供了以下代码,这些代码由Sun
Java编译器(1.6)从上面的代码生成:
int arraY[] = new int[5];
int aI[];
int k = (ai = array).length;
for(int j = 0; j < k; j++)
{
int i = aI[j];
i = 5;
}
在这段代码中,为什么不按我的意愿初始化我的数组?是不是for-each循环并非旨在做到这一点,或者我只是没有正确使用它?
int[] array = new int[5];
//initialise array -> Doesn't work! Array still full of 0's
for(int i : array)
i = 24;
以上是大佬教程为你收集整理的为什么此for-each循环不起作用?全部内容,希望文章能够帮你解决为什么此for-each循环不起作用?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。