首先,static是静态的、全局的。被static修饰的任何东西,都是隶属于类的。简单的说就是可以通过类名来引用的。
先看看如下代码:[code=java]package org.cxy.test;
public class Demo {
private static final int NUMBER;
private final int number;
static{
NUMBER = 5;
}
{
this.number = 6;
}
public static void main(String[] args){
System.out.println("NUMBER = "+Demo.NUMBER);
System.out.println("number = "+new Demo().number);
}
}[/code]语句“private static final int NUMBER;”
|- 含义为:定义一个“类常量”,它的值不可以更改,同时可以通过[color=Red]类名[/color]来引用。
语句“private final int number;”
|- 含义为:定义一个“常量”,它的值不可以更改,同时可以通过[color=Red]对象名[/color]来引用。
但是,不论是“类常量”还是“实例常量”亦或是“局部(方法内的)常量”,在使用这个常量之前都必须为其初始化(这好像是废话)。
“类常量”初始化方法:
|- 定义的同时为其指定值。
|- 在static块中为其赋值。
“实例常量”初始化方法:
|- 定义的同时为其指定值。
|- 在实例块中为其赋值。
|- 在构造器中为其赋值。
“局部常量”初始化的方法:
|- 和局部变量一样,在使用之前,为其赋值即可。
|- 但是“类常量”和“实例常量”即使您的程序中没有使用到它,也必须为其初始化。
至此,答案很显然了,若您需要使用“静态”的方式定义常量,那么使用static final就是了。 |