嗯 我认为是在调用的时候初始化 而不是在一开始初始化 因为我下面的这个代码中直接访问报错了- public class InerClassDemo {
- public static void main(String[] args){
- //new Inner().x; 报错了 不能直接访问这个x
- new Inner();
- new Inner().show();
- new OutClassDemo.InnerClass();
- }
-
- static class Inner{
- static{
- System.out.println("内部类静态代码块" +Inner.x);//输出内部类静态代码块0
- }
- static int x = 12;
- static void show(){
- System.out.println(x);
- }
- static{
- System.out.println("内部类静态代码块"+Inner.x);//输出内部类静态代码块12
- }
- }
- }
- class OutClassDemo{
- static class InnerClass{
- static{
- System.out.println("外部类中的内部类静态代码块"+InnerClass.x);//输出外部类中的内部类静态代码块0
- }
- static int x = 20;
- static{
- System.out.println("外部类中的内部类静态代码块"+InnerClass.x);//输出外部类中的内部类静态代码块20
- }
- }
- }
复制代码 |