网站首页 > 精选教程 正文
总所周知,Java中goto属于保留字,但是你不能说Java没有goto功能的实现。
提出一个问题:当有三层循环的时候,在第三层循环满足某些条件怎么跳出所有循环或者继续开始第一层循环呢?
事实胜于雄辩
上代码,你觉得下面 代码正确吗?
public class Test {
public static void main(String[] args) {
lable:for(int i=0;i<3;i++) {
for (int j=0; j < 3; j++) {
for(int k=0;k<3;k++) {
if (k == 1) {
break lable;
}
System.out.println("i=" + i + ",j=" + j+",k="+k);
}
}
}
}
}
来看输出结果:
在进行第三层循环的时候,k=1的时候,整个三层循环全部退出了,也许你发现了其中的差一点,我们稍后再说。
继续上菜,不对上代码
public class Test {
public static void main(String[] args) {
lable:for(int i=0;i<3;i++) {
for (int j=0; j < 3; j++) {
for(int k=0;k<3;k++) {
if (k == 1) {
continue lable;
}
System.out.println("i=" + i + ",j=" + j+",k="+k);
}
}
}
}
}
有过第一个代码片段的经验,我想你不会再想着会报错吧。
来看输出结果:
不要感到吃惊,这不就是Java的goto!不过没有C语言那么强,不过也能实现跳转,在一些场景中还是一个不小的利器。
在最基本的Java语法中,break和continue只能默认对最近的循环起到作用。
但是,配合上lable标签,即代码中第一层循环前面的lable这个字段,就是lable标签,具体标签起什么名字可以自己决定。
使用很简单,让break或continue针对某一个指定的循环起作用,那么使用label标签添加在这个循环前面,然后使用break或continue加上循环定义的label标签。
注意,lable标签和循环之间不能再有其他代码。
是不是由get到了?(^_-)
猜你喜欢
- 2025-01-11 Java是什么?Java到底学什么?Java学完能干什么工作?
- 2025-01-11 java 中的多种跳出多重循环的方式
- 2025-01-11 MySQL存储过程,让存储过程不再“高级”难懂
- 2025-01-11 javaagent介绍、使用、实现详解
- 2025-01-11 Java 新手教程,建议收藏
- 2025-01-11 JAVA里的英文 每日点点词汇
- 2025-01-11 如何用计算机实现 (1+2)*3 ?
- 2025-01-11 感动哭了!Java界的四大名著之一:Java编程思想最新中文版已开源
- 2025-01-11 Java小白入门必懂知识点
- 2025-01-11 Scala没有break和continue如何实现相同的功能
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)