Java中的final关键字究竟有何神秘之处?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1410个文字,预计阅读时间需要6分钟。
根据上下文环境,Java中的关键字final的含义有一些细微的差别,但通常它表示这是不能被改变的。防止改变的原因主要有两个:设计或效率。
由于这两个原因差异很大,因此有可能误用关键字。
根据上下文环境,Java 的关键字 final 的含义有些微的不同,但通常它指的是“这是不能被改变的”。防止改变有两个原因:设计或效率。因为这两个原因相差很远,所以有可能误用关键字 final。
以下几节讨论了可能使用 final 的三个地方:数据、方法和类。
1)final 数据
对于编译时常量这种情况,编译器可以把常量带入计算中,可以减少了一些运行时的负担。在 Java 中,这类常量必须是基本类型,而且用关键字 final 修饰。你必须在定义常量的时候进行赋值。
带有恒定初始值的 final static 基本变量(即编译时常量)命名全部使用大写,单词之间用下划线分隔。
一个被 static 和 final 同时修饰的属性只会占用一段不能改变的存储空间。
当用 final 修饰对象引用而非基本类型时,
- 对于基本类型,final 使数值恒定不变。
- 对于对象引用,final 使引用恒定不变。
一旦引用被初始化指向了某个对象,它就不能改为指向其他对象。但是,对象本身是可以修改的,Java 没有提供将任意对象设为常量的方法。(你可以自己编写类达到使对象恒定不变的效果)这一限制同样适用数组,数组也是对象。
本文共计1410个文字,预计阅读时间需要6分钟。
根据上下文环境,Java中的关键字final的含义有一些细微的差别,但通常它表示这是不能被改变的。防止改变的原因主要有两个:设计或效率。
由于这两个原因差异很大,因此有可能误用关键字。
根据上下文环境,Java 的关键字 final 的含义有些微的不同,但通常它指的是“这是不能被改变的”。防止改变有两个原因:设计或效率。因为这两个原因相差很远,所以有可能误用关键字 final。
以下几节讨论了可能使用 final 的三个地方:数据、方法和类。
1)final 数据
对于编译时常量这种情况,编译器可以把常量带入计算中,可以减少了一些运行时的负担。在 Java 中,这类常量必须是基本类型,而且用关键字 final 修饰。你必须在定义常量的时候进行赋值。
带有恒定初始值的 final static 基本变量(即编译时常量)命名全部使用大写,单词之间用下划线分隔。
一个被 static 和 final 同时修饰的属性只会占用一段不能改变的存储空间。
当用 final 修饰对象引用而非基本类型时,
- 对于基本类型,final 使数值恒定不变。
- 对于对象引用,final 使引用恒定不变。
一旦引用被初始化指向了某个对象,它就不能改为指向其他对象。但是,对象本身是可以修改的,Java 没有提供将任意对象设为常量的方法。(你可以自己编写类达到使对象恒定不变的效果)这一限制同样适用数组,数组也是对象。

