这一章我们对初始化进行一下更深的理解: 类在初始化的时候,静态变量的声明语句以及静态代码块都被看作类的初始化语句,Java虚拟机会按照初始化语句在类文件中的先后顺序来依次加载它们。 上图中a的初始化其实经过了四步1、a被初始化为默认值02、a被赋予正确的初始值13、执行静态代码块,将a的值赋为24、 ...
分类:
其他好文 时间:
2018-04-01 16:06:10
阅读次数:
161
首先,我们以一个最经典的例子来让大家知道什么是类的加载机制,上代码: 我们先猜测一下运行结果,然后我们再来调换一下单实例生成的顺序,将: 修改为 然而我们会惊奇的发现,结果不一样,第一个结果是counter1=1,counter2=0 第二个结果是 counter1=1,counter2=1, 这是 ...
分类:
其他好文 时间:
2018-04-01 01:06:11
阅读次数:
198
一、类加载机制 类加载器将类的.class文件中的二进制数据读入到内存中,将其放在方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问 ...
分类:
编程语言 时间:
2018-03-29 19:09:30
阅读次数:
161
三、类是如何被加载的? 什么是类加载机制? 将.class中的二进制数据读到内存,然后整理成类的元数据写到方法区;然后根据类的元数据结构在堆内存中创建类的实例对象; 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang. ...
分类:
其他好文 时间:
2018-03-29 13:34:54
阅读次数:
133
一、静态代码块 里面可以有输出语句 随着类的加载而加载,而且只被加载一次 多个静态代码块之间按照顺序结构执行 静态代码块的执行要早于非静态代码块的执行。 静态的代码块中只能执行静态的结构(类属性,类方法) 二、非静态代码块 可以对类的属性(静态的 & 非静态的)进行初始化操作,同时也可以调用本类声明 ...
分类:
编程语言 时间:
2018-03-26 22:26:30
阅读次数:
197
类的加载机制JVM把class文件加载到内存,并对数据进行校验,解析和初始化,最终形成JVM可以直接使用的Java类型的过程。加载将class文件字节码内容加载到内存中,并将这些静态数据转换成方法区中的运行时数据结构,在堆中生成一个代表这个类文件的java.lang.Class对象,作为方法区类数据的访问接口。-----这个过程需要类加载器参与链接验证:确保加载的类信息符合JVM规范,没有安全方面
分类:
其他好文 时间:
2018-03-19 10:21:55
阅读次数:
106
类的初始化时机 在上篇文章中讲到了类的六种主动使用方式,反射是其中的一种(Class.forName(“com.jack.test”)),这里需要注意一点:当调用ClasLoader类的loadClass方法对类进行加载的时候,并不是对类的主动调用,不会导致类的初始化。 那么接下来我继续给大家2个例 ...
分类:
编程语言 时间:
2018-03-16 19:36:02
阅读次数:
187
类完整的生命周期包括加载,验证,准备,解析,初始化,使用,卸载,七个阶段.其中验证,准备,解析统称为连接,类的卸载在前面的关于垃圾回收的博文中已经介绍. 加载,验证,准备,初始化,卸载这五个阶段的顺序是确定的,类的加载必须按照这种顺序按部就班的来,而解析阶段不一定,它可以在初始化阶段之后开始,这是为 ...
分类:
其他好文 时间:
2018-03-16 18:38:49
阅读次数:
117
一丶Class的理解 一丶获得Class对象的方法 1)通过类的静态属性class获得 2)通过运行时类的getClass方法获得 3)通过Class的静态方法获得 4)通过类的加载器获得(了解) 二丶通过Class对象创建对应的运行时类的实例对象 ...
分类:
编程语言 时间:
2018-03-13 14:01:57
阅读次数:
210
http://blog.csdn.net/jackfrued/article/details/44921941第21题 类的加载是指把类的.class文件中的数据读入到内存中,通常是创建一个字节数组读入.class文件,然后产生与所加载类对应的Class对象。加载完成后,Class对象还不完整,所以 ...
分类:
其他好文 时间:
2018-03-12 17:00:53
阅读次数:
128