被static修饰的对象在相同JVM中只有唯一实例,表现出来就是其他对象共享此对象(共用相同的对象).
静态方法可以在没有产生类对像的时候使用!
非静态方法必须产生类对像才可以使用!
如果是非静态的内部类了,说明这个类只使用于包含它的那个类,专用的。 为什么还要在它里面定义静态的呢
原因简单解释一下:把外边的类叫做OutClass,内部类叫做InnerClass,首先要了解JAVA的装载过程,先加载类,然后初始化静态的东西,并且JAVA编译器必须保证所有的静态都在使用前分配好内存空间,然后非静态的只有在使用的时候才分配内存空间。 所以非静态的InnerClass必须得要OutClass实例化之后才会存在,所以非静态InnerClass的静态成员在开始的时候并没有得到初始化(因为这些内存是无法通过任何方式访问的),这就和JAVA的编译原则相违背了。
按照上面的讲如果InnerClass为OutClass的静态成员,就可以在它里面定义静态的了
|