Java final关键字

由于语境(应用环境)不同,final关键字的含义可能会稍微产生一些差异,但它最一般的意思就是声明** 这个东西不能改变。之所以要禁止改变,可能是考虑到两方面的因素:设计和效率**。由于这两个原因颇有些区别,所以也会造成final关键字的误用

final数据

许多程序设计语言都有自己的办法告诉编译器某个数据是常数。常数主要用于下述两个方面:

  • 编译期常数,它永远不会改变
  • 在运行期初始化的一个值,我们不希望它发生变化

对于编译期的常数,编译器(程序)可以将常数值封装到需要的计算过程里,也就是说,计算可在编译期间提前执行,从而节省运行时候的一些开销。在Java中,这些形式的常数必须属于基本数据类型(Primitives),而且要用final关键字去表达。在对这样的一个常数进行定义的时候,必须给出一个值

无论static还是final字段,都只能存储一个数据,而且不得改变。

若随同对象句柄使用了final,而不是基本数据类型,它的含义就稍微让人有点儿模糊了,对于基本数据类型,final会将值变成一个常数;但对于对象句柄,final会将句柄变成一个常数。进行声明是时候,必须将句柄初始化到一个具体的对象。而且永远不能将句柄变成指向另外一个对象。然而,对象本身是可以修改的。Java对此未提供任何手段,可将一个对象直接变成一个常数(但是,我们可以直接编写一个类,使其中的对象具有“常数”效果)。这一限制也适用于数组,它也属于对象。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Java final关键字修饰变量、类、方法时,表示该变量/类/方法是无法被修改的,通常使用final关键字主要出...
    LilacZiyun阅读 4,075评论 0 2
  • 在Java 中,final关键字可以修饰 类,方法,和变量(包含成员变量和局部变量)。 final 类 当用fin...
    伊凡的一天阅读 1,814评论 0 2
  • [toc] final关键字 - think in java 笔记 之前对于final关键字只是大概了解,平时编码...
    devliu_jianshu阅读 2,548评论 0 0
  • 一、final 修饰数据 有final修饰的数据是用来告诉编译器一块数据是恒定不变的,有时数据恒定不变是很有用的,...
    国祥同学阅读 2,962评论 0 0
  • 说明:推荐Cordova原生调用方式,优点是代码和逻辑简单,容易理解http://www.jianshu.com/...
    Lrxc阅读 5,227评论 2 1

友情链接更多精彩内容