【JAVA】Java中goto语句的简介与使用
程序员文章站
2022-03-15 13:29:30
...
1.概述
这是我在看公司代码的时候发现,居然有一个goto语句的使用,所以来学习一下
goto语句在java中作为保留字,并没有实现它。但在其他语言中(c语言),goto是个合法的关键字
java中支持的break和continue虽然能实现goto语句的功能但是我个人总结他们的用法大同小异
首先在java中对标号的要求非常严格
标号
必须在一个循环的前面,意思是这个循环的名字叫outer
(假设标号名为outer),并且这一行后面不能有任何语句了
;
而break和continue是和循环语句结合使用的,因此实际上语句标签的使用也是和循环紧密结合的。
语句标签在被使用的情况,只能定义在循环迭代语句之前,否则编译出错
因此带标号的break、continue 只能在循环体或者选择体(if等)之中跳转
而(c语言)goto的用法则比较灵活,(c语言)中的标号可以在任意一个合法语句的前面
因此goto可以在一个函数(c语言)中任意位置跳转(当然不能违反goto语句的合理用法例如不能再嵌套之间跳转等)
因此 个人总结
- 带标号的break、continue局限于循环体中跳转
- 带标号的goto 可以在整个方法中(c语言函数)跳转
- goto比带标号的break、continue用法灵活 正因为太灵活了,使程序的逻辑结构变的复杂,流程不够清晰,程序的可读性下降,所以java中把goto 保留了
2.案例
package com.java.keyword;
import org.junit.Test;
import static org.junit.Assert.*;
public class GoToDemoTest {
/**
* 1:0
* 1:1
* 1:2
* 1:3
* 1:4
* 2:0
* 2:1
* 3:0
* 3:1
* 3:2
* 3:3
* 3:4
* 4:0
* 4:1
* 4:2
* 4:3
* 4:4
*/
@Test
public void gotoTest(){
for (int i = 1; i <5; i++) {
for (int j = 0; j < 5; j++) {
if(i == 2 && j == 2){
break;
}else {
System.out.println(i+":"+j);
}
}
}
}
/**
* 1:0
* 1:1
* 1:2
* 1:3
* 1:4
* 2:0
* 2:1
*/
@Test
public void goto1Test(){
WAF_LOOP_ONE:
for (int i = 1; i <5; i++) {
for (int j = 0; j < 5; j++) {
if(i == 2 && j == 2){
break WAF_LOOP_ONE;
}else {
System.out.println(i+":"+j);
}
}
}
}
}
推荐阅读
-
Java中数组操作 java.util.Arrays 类常用方法的使用
-
Java中keytool的使用
-
Java NIO ByteBuffer 的使用与源码研究
-
使用java8中的Optional API解决nullPointException问题
-
Java日期时间API系列11-----Jdk8中java.time包中的新的日期时间API类,使用java8日期时间API重写农历LunarDate
-
微信小程序授权 获取用户的openid和session_key【后端使用java语言编写】,我写的是get方式,目的是测试能否获取到微信服务器中的数据,后期我会写上post请求方式。
-
举例说明Java多线程编程中读写锁的使用
-
Java之JDK的下载与安装,java环境变量的配置,Editplus的下载与使用
-
Java中Optional的使用指南
-
java使用dom4j生成与解析xml文档的方法示例