本帖最后由 曹宇 于 2013-5-11 14:47 编辑
- class Noname5
- {
- public static void main(String[] args)
- {
- Outer.Inter.run(); //主函数调用
- }
- }
- class Outer //外部类,非静态
- {
- static int x =3; //静态外部类成员变量
- static class Inter //静态内部类
- {
- static void run() //静态内部类成员方法
- {
- System.out.println(x);
- }
- }
- }
复制代码 如上代码:
为什么在主函数中,使用 Outer.Inter.run();就可以?
就算Inter是静态类,可是Outer是非静态的啊,还没有创建Outer对象,哪里来的Inter呢?
是不是 编译过程中,已经生成了Outer和Inter的class文件,然后运行的时候因为Outer中有Inter这个静态 所以自己就进了内存了?
因为正常方法中如;
class Test
{
}
class Demo
{
public static void main(String [] args)
{
}
}
编译之后是会有Test.class文件的,可是在主函数中不创建Test的对象,这个class文件是不会进内存的只在磁盘上保留啊。
因为内部类带个静态那么这个class文件就不需要主函数自行就会进入内存吗?进入静态区?
还请高手解答。 |