编译时常量:在编译源码时能计算出具体数值的常量,
public class PrintWords{
public static void main(String[] args){
// System.out.println(Temp.a); //A处
// System.out.println(Temp.b); //B处
// System.out.println(Temp.c); //B处
// System.out.println(Temp.i2); //B处
// System.out.println(Temp.b1); //B处
// System.out.println(Temp.s1); //B处
// System.out.println(Temp.aa); //B处
System.out.println(Temp.e); //B处
}
}
class Temp{
static{
System.out.println("Temp类已被初始化");
}
public static final int a=10;
//编译期可以计算出来a=10,所以a是编译期常量
public static final int b=((int)(Math.random()*10));
//编译期不可以计算出b的值,所以b不是编译期常量
public static final int c=a+1;
static final int d= "hello world".length();
public static final Integer i2=1;
public static final Boolean b1=true;
public static final String s1="0";
public static final int i3=s1.length();
public static final A aa=new A();
public static final Enum e=E.A;
}
class A{
}
enum E {
A,B,C,D,E,F,G;
}
//编译时常量只有可能是基本类型和String类型,而不可能是任何的引用类型,包括枚举,包装。