我只是注意到迭代变量的声明不能在传统的for循环的情况下在每个类似之外完成.
比如说,以下是不可能的:
String str;
for(str : strings) {
// Do something
}
Run Code Online (Sandbox Code Playgroud)
但是对于传统的for循环,我也可以在外部声明迭代循环控制变量,这样我就可以重用它或者获取循环之外的最后一个值.
int i;
for(; i < strings.length; i++) {
// Do something
}
System.out.println("I iterated upto " + i);
Run Code Online (Sandbox Code Playgroud)
为什么为每个循环结构保留这样的限制?我同意迭代变量只能从for-each循环中获取一个值.但是为什么不在外部使用它来保持并使用它作为默认值或循环中的最后一个元素值?然而,这种限制看起来如此幼稚,并且在被取消之前感觉像是我的自由.如果这样的事情是可能的,我会编写这样的代码:
String[] strings = new String[]{"First", "Middle", "Last"};
String str = "Default";
for(str : strings) {
// Do something.
}
if(str.equals("Last") {
System.out.println("I did a for each iteration and my last value is " + str);
} else {
System.out.println("I couldn't iterate, so what I can show you is …
Run Code Online (Sandbox Code Playgroud)