考虑一下这种方式,在每个循环之后,作用域被“破坏”,变量消失了。在下一个循环中,将创建一个新的作用域,并且可以在该作用域中再次声明该变量。
由于类似的原因,您也可以这样做
{ int someInteger = 3;}{ int someInteger = 13;}顺便说一句,Java不允许局部变量屏蔽,这可能会带来不便
int x = 3;{ int x = 13; // error!}Consumer<Integer> consumer = (x)->print(x); // ERROR! // lambda parameter is treated like local variableRunnable r = ()->{ int x; ... } // ERROR// lambda body is treated like local block


