为什么当标记的中断位于中循环和内循环开始之前时,输出完全相同?
示例代码 1 - 当断点位于内循环开始时
for(int i = 1; i <= 3; i++)
{
//breakpoint:
for (int j = 1; j <= 3; j++)
{
breakpoint:
for(int k = 1; k <= 3; k++)
{
if (i==2)
break breakpoint;
System.out.println(i + " " + j + " " + k);
}
}
}
输出为:
1 1 1
1 1 2
1 1 3
1 2 1
1 2 2
1 2 3
1 3 1
1 3 2
1 3 3
3 1 1
3 1 2
3 1 3
3 2 1
3 2 2
3 2 3
3 3 1
3 3 2
3 3 3
示例代码2 - 当断点位于中间循环的开头时
// breakpoint:
for(int i = 1; i <= 3; i++)
{
breakpoint:
for (int j = 1; j <= 3; j++)
{
// breakpoint:
for(int k = 1; k <= 3; k++)
{
if (i==2)
break breakpoint;
System.out.println(i + " " + j + " " + k);
}
}
}
输出是相同的:
1 1 1
1 1 2
1 1 3
1 2 1
1 2 2
1 2 3
1 3 1
1 3 2
1 3 3
3 1 1
3 1 2
3 1 3
3 2 1
3 2 2
3 2 3
3 3 1
3 3 2
3 3 3
示例代码 3 - 当断点位于外循环的开头时
breakpoint:
for(int i = 1; i <= 3; i++)
{
//breakpoint:
for (int j = 1; j <= 3; j++)
{
// breakpoint:
for(int k = 1; k <= 3; k++)
{
if (i==2)
break breakpoint;
System.out.println(i + " " + j + " " + k);
}
}
}
输出为:
1 1 1
1 1 2
1 1 3
1 2 1
1 2 2
1 2 3
1 3 1
1 3 2
1 3 3
我将断点的位置从内循环改为中循环再到外循环。当断点位于内部循环和中间循环的开头时,我预计输出会彼此不同。
为什么无论断点位于内循环还是中循环,输出结果都是一样的?
输出是相同的,因为您在
System.out.println
语句之前立即中断,并且条件 i == 2
不会改变,直到外循环进入下一次迭代。在这种情况下,中间循环运行更多次并不重要。
当标签放在内环上并且
i == 2
:
i = 3
当标签放在中间环上并且
i == 2
:
i = 3