java中的static的用法

为什么我不在class Book前面加static 这个代码会报错list.add(new Book(123, "java编程思想"));图片说明
加上之后就不会报错了

鼠标放在红线上,提示什么错

BOOk只是内部类,静态方法在类加载时加载,其他的在实例化类时加载,
也就是main加载在book之前,不能调用不存在的东西吧

非静态内部类属于外部类的实例成员,所以外部类静态方法想引用非静态内部类时,需要先获取外部类实例,再"outclass.new Innerclass()"获取内部类实例

 public class OutClass {


 class InnerClass{
      int i=2;
      int a=0;
      }

  public static void main(String[] args) {
      ArrayList  list=new ArrayList();
      OutClass  outClass=new OutClass();//获取外部类实例

      InnerClass inner=outClass.new InnerClass();//外部类实例.new 获取内部类实例
      list.add(inner);
}
}