FAQ

Java

JSP

Servlet


Advertisement



Why final variable in Enhanced for Loop does not act final?


public class EnhancedForTest {
public static void main(String... args) {
String[] strArr = {"A", "B", "C", "D"};

for (final String s : strArr) {
System.out.println(s);
}
}
}

Since the String s is delcared as final, this code should not compile. However, this is working fine. Why?

The enhanced for-loop as shown above is actually just as the following code:

public class EnhancedForTest {
public static void main(String... args) {
String[] strArr = {"A", "B", "C", "D"};

for (int index = 0; index < strArr.length; index++) {
final String s = strArr[index];
System.out.println(s);
}
}
}

That is, s is a local variable (local to the for-loop) and it is not been assigned a value twice so it's just fine. Therefore, it's just local variable and each iteration of the loop a new different final local variable is created.


Printer-friendly version Printer-friendly version | Send this 
article to a friend Mail this to a friend

Previous Next vertical dots separating previous/next from contents/index/pdf Contents

  |   |