当一个类中有声明为static final的变量这样的变量对类的加载器有一定的影响首先看看下面的例子 因为a是static final变量且它等于/在编译的时候就可以知道它的值所以直接访问a的值不会引起FinalTest类的初始化作为表现也就是static静态代码快不会被加载 运行结果为 在看一个例子 这个static final变量a因为i在编译的时候无法知道它的确切的值所以只有等到运行的时候才能知道所以自己访问FinalTesta会引起FinalTest类的初始化也就是static静态代码快的加载 运行结果为 下面的例子是讲当子类被主动访问的时候会引起其直接父类的初始化 因为直接访问Childb会先初始化Parent类然后初始化Child类 运行结果为 如果通过子类直接访问父类的变量只会初始化父类而不会初始化子类 直接访问Parent类的a变量则只会直接初始化parent类不会初始化Child类 运行结果如下 |