第五章 java语言有没有 goto、const语句?

一、Java语言的goto语句

        准确来说,java中没有goto语句。

        在java中可以找到实现类似功能的方法,该方法仅限于循环嵌套跳转到外层循环的情况。例如你可以在外层循环上使用lablename:(lablename是自定义标签名)的方式标注,在内循环中,可以使用break lablename;或者continue lablename跳转到外循环上。这样就可以模拟出类似goto语句的功能。

        1、goto 是 Java 中一个没有使用的关键字。如果想叫做保留字也可以。一般结构化程序,都不需要使用 goto 语句的,在有分支和循环以及递归调用之后,goto 完全可以不使用了。为了程序代码更简捷,对于循环结构,还有 break 和 continue 用于跳转。而且break 和 continue 都可以带标签,更增加了它们的灵活性。

        2、goto 是 Java 中的保留字,在目前版本的 Java 中没有使用。根据 James Gosling(Java 之父)编写的《The Java Programming Language》一书的附录中给出了一个 Java 关键字列表,其中有 goto 和 const,但是这两个是目前无法使用的关键字,因此有些地方将其称之为保留字,其实保留字这个词应该有更广泛的意义,因为熟悉 C 语言的程序员都知道,在系统类库中使用过的有特殊意义的单词或单词的组合都被视为保留字。

        3、goto语句还是有作用的,在程序执行过程中可以跳转到一个指定标签的位置。

        4、使用goto关键字的弊端:这种方式太过随意,容易打破程序的执行流程。并且造成程序可读性和维护性变差。
        由于goto关键字在java之前的语言中广泛使用,因此尽管现在在java中还没有使用该关键字,但是仍然设置为了保留字,一旦在开发环境中输入goto就会变色为关键字颜色。

二、Java语言的const语句

        const 在实际编程中用得并不多,const 是 constant 的缩写,意思是“恒定不变的”!它是定义只读变量的关键字,或者说 const 是定义常变量的关键字。const的作用就是用来声明一个变量值不能进行改变。

const int  a = 2;

const 和变量类型 int 可以互换位置,二者是等价的,即上条语句等价于:

int  const  a = 2;

那么用 const 修饰后和未修饰前是没有区别的,都等于 2 。

所以弊端:const并不能规避动态类型问题,const保证的是词法绑定的不可变性。所以说它定义的是只读变量,这也就意味着必须在定义的时候就给它赋初值。通俗的说就是定义这种变量的时候必须赋值,并且赋值后不能再次改变,但这种改变不是真正意义上的不可以改变。
        用 const 修饰的变量,无论是全局变量还是局部变量,生存周期都是程序运行的整个过程。全局变量的生存周期为程序运行的整个过程这个是理所当然的。而使用 const 修饰过的局部变量就有了静态特性,它的生存周期也是程序运行的整个过程。我们知道全局变量是静态的,静态的生存周期就是程序运行的整个过程。但是用const修饰过的局部变量只是有了静态特性,并没有说它变成了静态变量。
        我们知道,局部变量存储在栈中,静态变量存储在静态存储区中,而经过 const 修饰过的变量存储在内存中的“只读数据段”中。只读数据段中存放着常量和只读变量等不可修改的量。
       我们都知道,数组的长度不能是变量。虽然 const 定义的是只读变量,就相当于是定义一个常量。但是只读变量也是变量,所以 const 定义的变量仍然不能作为数组的长度。但是需要注意的是,在C++中可以,C++ 扩展了 const 的含义,在 C++ 中用 const 定义的变量也可作为数组的长度。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值