for或者while的标记循环
今天在写代码的时候,发现一个for循环前有一个字母,不知道这个是什么语法,后来查了一下,这个语法是用来实现标记循环的功能
这个是代码块
r:for(int rowNum = 1; rowNum <= sheet.getLastRowNum(); rowNum++){ HSSFRow row = sheet.getRow(rowNum); //删除下面这一行 System.out.println("行号"+rowNum+"编码"+POIUtils.getCellValue(row.getCell(0))); if(row == null) continue; //判断编码是否为空 HSSFCell cellA = row.getCell(0); String codeVal = POIUtils.getCellValue(cellA); if(StringUtils.isEmpty(codeVal)){//该行订单号为空 //excpMsg += "第[" + (row.getRowNum()+1) + "]行订单号是空的;"; continue; } if(omsCmccOrderList.size()>0){//省移动B2B集合存在订单 boolean flag = false;//标记省移动B2B集合中是否包含该订单 //遍历省移动B2B订单集合 for(OmsCmccOrderObject bound : omsCmccOrderList){ if(codeVal.equals(bound.getOrderNo())){ //excel去重 num = String.valueOf((row.getRowNum()+1)); errMsg = "该行与第["+num+"]行订单号["+codeVal+"]相同!"; cmccOrderMapper.insertExceptionMsg(num, errMsg); //省移动B2B集合中存在该订单 flag = false; continue r; }else { //省移动B2B集合中没有重复订单 //判断该订单是否在数据库中已存在,那么调用update函数,那么根据该订单的状态,若是-9那么改成0,并返回审核通过;如果是0那么返回审核通过,如果不存在报错 flag = false; } }
这个是上面代码的图片
可以看到在标记1出,出现的r:这个就是标记循环,标记2是最外面的for循环,标记3的地方是一个for循环,标记4的地方就是循环标签出现的地方。
根据return的语法,如果不同循环标签的话,那么在标记4处的return语句,会跳出该次循环,但是回跳到标记3处的循环,但是如果你要是实现的是跳到标记1处的循环,那么用标签循环这个语法就可以实现。return r,就会跳到标记1处的for循环;