Java循环遍历整数数组

时间:2015-05-12 17:01:21

标签: java arrays

考虑以下Java代码:

int[] array = {1, 2, 3, 4, 5, 6};
for(int i : array) {
    System.out.print(i + " ");
}

上面的代码显然会打印出数组的内容。

  

1 2 3 4 5

我的问题是为什么Java不允许这样做?

int[] array = {1, 2, 3, 4, 5, 6};
int i;
for(i : array) {
    System.out.print(i + " ");
}

编辑: 当我编译第二个程序时,我收到以下错误:

Main.java:14: error: bad initializer for for-loop
        for(i : array) {
            ^
1 error

3 个答案:

答案 0 :(得分:8)

因为Java强迫你在这里声明一个变量。 JLS, Section 14.14.2使用语法

定义增强的for循环
  

EnhancedForStatement:

for ( {VariableModifier} UnannType VariableDeclaratorId : Expression ) Statement
     

EnhancedForStatementNoShortIf:

for ( {VariableModifier} UnannType VariableDeclaratorId : Expression ) StatementNoShortIf

UnannType是要声明的变量的类型。

接着说明这样一个增强的for循环相当于这个循环Iterable s ...

for (I #i = Expression.iterator(); #i.hasNext(); ) {
    {VariableModifier} TargetType Identifier =
        (TargetType) #i.next();
    Statement
}

...和数组...

T[] #a = Expression;
L1: L2: ... Lm:
for (int #i = 0; #i < #a.length; #i++) {
    {VariableModifier} TargetType Identifier = #a[#i];
    Statement
}

很明显,变量是循环内部的本地声明变量。

答案 1 :(得分:0)

显示的错误是什么?也许你应该初始化变量:

int i = 0;

答案 2 :(得分:0)

您正在使用“增强型”for循环。这是Java 1.5之后的一个功能。增强for循环的语法是

for(Object obj : List) {
    ...
}

如果以其他格式编写,则会引发编译错误。基本上你编写的代码在语法上是不正确的。这将是编译错误。

你可以参考 What is the syntax of enhanced for loop in Java?