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.
Most Recent java Faqs
- How to uncompress a file in the gzip format?
- How to make a gzip file in Java?
- How to use Java String.split method to split a string by dot?
- How to validate URL in Java?
- How to schedule a job in Java?
- How to return the content in the correct encoding from a servlet?
- What is the difference between JDK and JRE?
Most Viewed java Faqs
- How to read input from console (keyboard) in Java?
- How to use HttpURLConnection POST data to web server?
- How to add BASIC Authentication into HttpURLConnection?
- How to Retrieve Multiple Result Sets from a Stored Procedure in JDBC?
- What are class variables in Java?
- What are local variables in Java?
- How to Use Updatable ResultSet in JDBC?