最近在看JDK源码时总是看到 : 这个标示符:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
public static void main(String[] args) { int a = 0; for (int i = 0; i < 3; i++) { for (int j = 0; j < 5; j++) { first: if (i == 1) { break first; } a++; } } System.out.println(" a = " + a); }
输出结果:a = 15
public static void main(String[] args) { int a = 0; for (int i = 0; i < 3; i++) { first: for (int j = 0; j < 5; j++) { if (i == 1) { break first; } a++; } } System.out.println(" a = " + a); }
输出结果:a = 10
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
public static void main(String[] args) { int a = 0; first: for (int i = 0; i < 3; i++) { for (int j = 0; j < 5; j++) { if (i == 1) { break first; } a++; } } System.out.println(" a = " + a); }
输出结果: a = 5
first: 必须在 break first;之前,不然编译报错。
通过上面三个first: 所在不同位置输出 a 的 值不同,可以看出 : 是为了何时结束一个循环体,结束后跳往何处而存在。
这么一看 : 类似于goto。由于java没有goto所以有了 :