黑马程序员技术交流社区

标题: 内部类中定义了静态成员那么该类一定是静态的 [打印本页]

作者: zhqw_heima    时间: 2015-3-20 08:34
标题: 内部类中定义了静态成员那么该类一定是静态的
当内部类中定义了静态 成员,那么该内部类也一定是静态的,为什么

作者: 黑色救护车    时间: 2015-3-20 08:53
本帖最后由 黑色救护车 于 2015-3-20 08:59 编辑

通过查阅资料,我的理解是这样:
1)Java的装载过程是,先装载类,然后初始化静态的成员;
2)Java编译器保证所有静态成员在使用前都分配好了内存空间,而非静态成员只有使用的时候才动态分配内存;
3)如果内部类不是静态的,按照第1),第2)条,非静态内部类只有在外部类被实例化之后才被初始化;
4)根据第3)条,只有非静态内部类被初始化之后,内部类里的静态变量才被初始化;
5)第4)条与第2)条相悖;Java编译器要保证所有静态成员在使用前都被初始化,分配内存;
6)所以,要保证Java的编译原则,要如果要在内部类中定义静态成员,内部类也应该定义成静态,保证外部类一加载,所有静态成员全部初始化,并拥有自己的内存空间,以备使用。
希望对你有帮助!

作者: zhqw_heima    时间: 2015-3-20 10:08
黑色救护车 发表于 2015-3-20 08:53
通过查阅资料,我的理解是这样:
1)Java的装载过程是,先装载类,然后初始化静态的成员;
2)Java编译器保 ...

说的很对
作者: huhanghao    时间: 2015-3-20 10:39
茅塞顿开!!1楼,太感谢你了,解开了我一直的疑惑
作者: 黑色救护车    时间: 2015-3-20 16:10
huhanghao 发表于 2015-3-20 10:39
茅塞顿开!!1楼,太感谢你了,解开了我一直的疑惑

不会~ 大家共同进步!:)




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2