码迷,mamicode.com
首页 > 编程语言 > 详细

深入了解java虚拟机---类加载机制----初始化阶段

时间:2017-08-08 23:03:14      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:bsp   加载   一个   cli   初始化块   不同的   虚拟   lan   str   

准备阶段是给变量赋系统的初始值。而初始化阶段就是给变量赋程序员自己设的值

初始化阶段是<clinit>()方法的执行过程。过程如下

1.编辑器收集所有的赋值动作和静态块合并形成<clinit>方法。收集是按照代码出现的顺序决定的。并且静态初始化块只能访问定义在之前的变量,对于在之后的变量可以赋值,但是不能访问

2.先执行父类的<clinit>方法,再执行本类的<clinit>方法。而且不需要显式调用,虚拟机会保证父类<clinit>方法先执行。虚拟机执行的第一个<clinit>方法是java.lang.object

注:没有赋值操作和静态初始化块的类没有<clinit>方法

 

 

除了类,还有接口。接口可以有赋值.操作。但不同的是不需要先执行父接口的<clinit>方法,只有在用到后才执行(有点像懒加载)

深入了解java虚拟机---类加载机制----初始化阶段

标签:bsp   加载   一个   cli   初始化块   不同的   虚拟   lan   str   

原文地址:http://www.cnblogs.com/dailinfu/p/7308950.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!