最近在重温之前看的 JavaSE 教程, 在 final 关键字这里有点小疑惑, 查了些资料, 做个记录.
定义
final 关键字是 Java 中的 非访问修饰符 , 可以用来修饰 类、方法 和 变量
作用
final 修饰的
- 类
无法被继承 - 方法
无法被重写(覆盖) - 变量
只能赋值一次
用法
这里主要记录 final 应用在 变量 上的一些注意点
常量(final variable) 需要在声明时 初始化(initialize) , 否则会导致 编译时错误
/*
一段用来演示 常量初始化 的 Java 代码
*/
class Demo
{
// 1. 直接初始化
final int THRESHOLD = 5;
// 2. 实例语句块初始化
final int CAPACITY;
// 3. 构造方法初始化
final int MINIMUM;
// 1. 直接初始化, 这是个静态常量
static final double PI = 3.141592653589793;
// 4. 静态语句块初始化
static final double EULERCONSTANT;
// 2. 实例语句块初始化(续)
{
CAPACITY = 25;
}
// 4. 静态语句块初始化(续)
static{
EULERCONSTANT = 2.3;
}
// 3. 构造方法初始化(续)
//
// 注意!!!
// 如有多个构造方法
// 务必在各个方法体中完成该常量的初始化
public Demo()
{
MINIMUM = -1;
}
}
局部常量(Local Final Variable)
当常量在 方法 / 构造器 / 语句块 内部被声明时, 它称作 局部常量
它的 声明 和 初始化 可以分行完成
final 是局部变量唯一可用的修饰符
class Demo
{
public static void main(String args[])
{
// 局部常量 i
final int i;
i = 20;
System.out.println(i);
}
}