JAVA中类的加载顺序
来源:互联网 发布:辛格尔软件 编辑:程序博客网 时间:2024/05/22 13:51
有规律的,你这还不算复杂,如果包含父类以及内部类(非静态)就更复查,但是万变不离其宗。
规律一、初始化构造时,先父后子;只有在父类所有都构造完后子类才被初始化
规律二、类加载先是静态、后非静态、最后是构造函数
静态构造块、静态类属性按出现在类定义里面的先后顺序初始化,同理非静态的也是一样的,只是静态的只在加载字节码是执行一次,不管你new多少次,非静态会在new多少次就执行多少次
规律三、java中的类只有在被用到的时候才会被加载
规律四、java类只有在类字节码被加载后才可以被构造成对象实例
上面四条规律就解析你上面不能理解代码执行结果的原因了
--- 共有 3 条评论 ---
- xdev回复 @Archer2ee : 非静态是在new申请内存空间并初始化其值。java类是必须先加载字节码,然后通过new(有些不需要new,比如枚举和字符串,可以看jvm规范说明)根据字节码信息申请类的内存空间。上面的四种规律都是java虚拟机的规范严格规定的,只有实现规范的虚拟机才可以叫java虚拟机,所以ibm、oracle的虚拟机都符合上面四个规律。 (5个月前)
- xdev回复 @Archer2ee : 哈哈,确实,这个地方没有说的详细,类初始化化是分,静态,和非静态,静态是在类的字节码加载到jvm时,仅且只执行一次,按照先父后子,父子静态都初始化完后,跟据需要再初始化父子非静态部分(也就是说静态和非静态是分开的,但往往因为new的时候类即加载类同时也申请内存空间,可以先通过类名加静态方法或者静态属性代码调用来分开两个过程)。 (5个月前) 回复
0 0
- java 中类的加载顺序
- Java中,类的加载顺序
- java 中类的加载顺序
- java 中类的加载顺序
- java 中类的加载顺序
- java中类的加载顺序
- java中类的加载顺序
- Java 中类的加载顺序
- JAVA中类的加载顺序
- java中类的加载顺序
- Java类中代码的加载顺序
- java 中类的加载顺序
- java中类加载的顺序
- java中类的加载顺序
- java中类的加载顺序介绍
- Java中类加载的执行顺序
- Java中类的加载顺序
- java 中类的加载顺序
- ubuntu中dns不能保存的问题
- Android NDK 运行错误:java.lang.UnsatisfiedLinkError: Couldn't load XXX indLibrary returned null
- 修改XCode模板
- 解决bootstrap row span设置border换行的问题
- 更新UI的四种方式
- JAVA中类的加载顺序
- 一起talk C栗子吧(第五回:C语言实例--数组巧妙赋值)
- java反射机制
- Centos6.5学习之添加用户
- 提高第39课时,实践2,项目2-动态数组排序
- poj(2676)——Sudoku
- 第十一周项目2-储存班长信息的学生类
- 【Android】利用Java代码布局,按钮添加点击事件
- rust实现《一个典型的生产者和消费者的题目和实现》和rust使用感想