程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了为什么此for-each循环不起作用?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决为什么此for-each循环不起作用??

开发过程中遇到为什么此for-each循环不起作用?的问题如何解决?下面主要结合日常开发的经验,给出你关于为什么此for-each循环不起作用?的解决方法建议,希望对你解决为什么此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,请注明来意。