outer:
for (ConfigPrintMode configPrintMode : configPrintModeList) {
Long tempOrgId = orgId;
for (; ; ) {
if (configPrintMode.getOrgId().equals(tempOrgId)) {
data.put("orderPrintMode", configPrintMode.getOrderPrintMode());
data.put("pastePrintMode", configPrintMode.getPastePrintMode());
break outer;
}
if (tempOrgId.equals(0L)) {
break;
}
if (CollectionUtils.isNotEmpty(organizationList)) {
for (Organization organization : organizationList) {
if (organization.getId().equals(tempOrgId)) {
tempOrgId = organization.getPId();
break;
}
}
}
}
}
关键字break和continue都是结束循环的作用,但是它只能结束它外面的第一层循环,如果代码里面是一层一层又一层的循环,你想直接结束最外层循环又该怎么做呢?
此时,就需要outer了
如果只用break,那么只跳出了里面的for循环,外层还没结束。
用break;则输出:0000000000
用break outer;则输出:0
outer:就相当于表示它现在代表的某个循环。
如果想跳出它所代表的循环,那么就break outer;
如果想结束它所代表的此次循环,那么就continue outer;
for(初始化; 判断条件; 执行语句)
for语句的语法规定,括号里面一定要有两个分号,分开三个句子。
第一个句子是初始化用的,如果没有初始化的必要,就视为空语句,加上分号;
第二个句子作为判断条件,如果没有判断条件,也视为空语句,后加一个分号。这种情况,会无限循环,相当于while(1)。如果for的执行部分,就是{}之间有break语句,可以退出;
第三个句子是执行部分执行完毕再执行的语句;无则视为空语句;此时不用再加分号。
如果三者都为空,那么表示没有初始化,没有判断条件,不执行语句。由没有判断条件,故为死循环,相当于while(true)