Java final常量的用法(附带实例)
Java 中的 final 关键字表示赋值后不能被再次更改的值。在其他的语言中,通常可以将这样的值称为常量(constant)。
例如:
你也可以使用 static 关键字来声明一个在方法外的常量:
注意,System 类中声明了一个常量,如下所示:
延迟 final 变量的初始化是合法的,只需要在首次使用它之前初始化即可。例如,以下代码是合法的:
注意,有时你需要一组相关的常量,示例如下:
在这种情况下,你可以定义一个枚举(enumeration):
下面是如何声明和初始化 Weekday 变量:
例如:
final int DAYS_PER_WEEK = 7;按照惯例,常量的名称应当全部使用大写字母。
你也可以使用 static 关键字来声明一个在方法外的常量:
public class Calendar { public static final int DAYS_PER_WEEK = 7; ... }这样一来,该常量就可以在多个方法中被使用。在 Calendar 内部,你可以通过 DAYS_PER_WEEK 来表示该常量。但是,若要在另一个类中使用该常量,需要在该常量之前加上类名,即 Calendar. DAYS_PER_WEEK。
注意,System 类中声明了一个常量,如下所示:
public static final PrintStream out这样,可以在任何地方通过 System.out 的形式使用它。它也是少数几个没有用大写字母表示的常量之一。
延迟 final 变量的初始化是合法的,只需要在首次使用它之前初始化即可。例如,以下代码是合法的:
final int DAYS_IN_FEBRUARY; if (leapYear) { DAYS_IN_FEBRUARY = 29; } else { DAYS_IN_FEBRUARY = 28; }这也就是称它为“最终”变量的原因。一旦赋值,它就是最终变量,永远无法更改。
注意,有时你需要一组相关的常量,示例如下:
public static final int MONDAY = 0; public static final int TUESDAY = 1; ...
在这种情况下,你可以定义一个枚举(enumeration):
enum Weekday { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY };这样,Weekday 就是一种带有 Weekday.MONDAY 等数值的类型。
下面是如何声明和初始化 Weekday 变量:
Weekday startDay = Weekday.MONDAY;