Я не понимаю вывод следующего кода:
public class testBreak
{
public static void runTest()
{
high_level:
{
System.out.println("\nEnter in High Level");
middle_level:
for(int i = 0; i < 4; i++)
{
System.out.println("Enter in Middle level cicle");
int j = 0;
low_level:
while(j++ < 2)
{
System.out.println("Enter in Low level cicle");
System.out.println("i = " + i + ";j = " + j);
switch(i)
{
case 0 : break;
case 1 : break low_level;
case 2 : break middle_level;
case 3 : break high_level;
}
System.out.println("Exit from Low level cicle");
}
System.out.println("Exit from Middle level cicle");
}
System.out.println("Exit from High level cicle");
}
}
public static void main(String args[])
{
runTest();
}
}
Вот результат:
Enter in High Level
Enter in Middle level cicle
Enter in Low level cicle
i = 0;j = 1
Exit from Low level cicle
Enter in Low level cicle
i = 0;j = 2
Exit from Low level cicle
Exit from Middle level cicle
Enter in Middle level cicle
Enter in Low level cicle
i = 1;j = 1
Exit from Middle level cicle
Enter in Middle level cicle
Enter in Low level cicle
i = 2;j = 1
Exit from High level cicle
Я понимаю до строки i = 1;j = 1
, но почему это go до Exit from Middle level cicle
, а не Enter in low level cicle
, потому что у нас j = 1, а while (j ++ <2) должно принимать 1 <2, затем увеличить j до 2 и войти в цикл низкого уровня, как это было в первом запустить ?? </p>
editet: Кажется, break с меткой не равно goto, он выходит из метки l oop? и l oop не является бесплатным в коде, как в C / C ++, но применяется к этому конкретному l oop?