1静态代码块下面介绍一种不是很常见的静态修饰符的使用方法。当我们需要一个类,这个类的构造函数是私有的,那么这个类之外其他程序就不能够创建这个类的对象。那么如何初始化这个类呢?为了解决这个问题,我们可以使用前文中的静态成员变量或者静态方法来初始化类。在类的加载..
分类:
编程语言 时间:
2016-06-24 22:21:58
阅读次数:
221
一、什么是类的加载
类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。
类加载器并不需要等到某个类被“首...
分类:
编程语言 时间:
2016-06-24 15:40:46
阅读次数:
213
类的加载: 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载、连接、初始化这三个步骤来实现对这个类进行初始化。 加载: 就是指将class文件加载进入内存,并为之创建一个Class对象 任何类被使用时,系统都会创建一个Class对象 连接: 验证: 是否有正确的内部结构,并且和其他 ...
分类:
其他好文 时间:
2016-06-22 22:04:14
阅读次数:
169
类的加载过程指通过一个类的全限定名来获取描述此类的二进制字节流,并将其转化为方法区的数据结构,进而生成一个java.lang.Class对象作为方法区这个类各种数据访问的入口。这个过程通过Java中的类加载器(ClassLoader)来完成。 类装载器是用来把类(class)装载进JVM的。JVM规 ...
分类:
编程语言 时间:
2016-06-13 22:12:31
阅读次数:
369
通过前面好几章的或详细或不详细的介绍,我们终于把字节码的结构分析的差不多了。现在我们面临这样一个问题,如何运行一个字节码文件呢?
首先,java语言不同于其他的编译时需要进行链接工作的语言不通,java语言有一个很明显的特性,那就是动态加载,一个字节码的加载往往都是在程序运行的时候加载进来的,很多时候这种方式给我们带来了便利。虽然从某种意义上来说他可能消耗了一定的资源降低了性能。
类的生命周期...
分类:
其他好文 时间:
2016-06-11 14:36:56
阅读次数:
285
类的加载机制 1.类加载 2.连接 3.初始化 反射 java程序中的对象在运行时会出现两种类型:编译时类型 运行时类型 使用反射查看类信息 1.使用Class.forName() Class c=Class.forName(“全限定类名”);2.调用class属性来获得该类对象的class对象 C ...
分类:
编程语言 时间:
2016-06-06 00:37:39
阅读次数:
142
1.主函数是一类特殊的函数,作为程序入口,可被虚拟机调用。主函数格式是固定的。public:函数访问权限最大。static:代表函数随着类的加载已经存在。void:主函数没有具体返回值。main:不是关键字,是一个特殊的单词,可被虚拟机识别。(String[] arr):函数的参数,字符串元素的数组 ...
分类:
编程语言 时间:
2016-06-03 19:06:42
阅读次数:
179
类的加载和初始化的了解对于我们对编程的理解有很大帮助,最近在看类的记载方面的问题。从网上查阅了若干文章,现总结如下: 我们通过一段代码来了解类加载和初始化的顺序: package com.classloader.demo;class Insect { private int i = 9; prote ...
分类:
编程语言 时间:
2016-05-31 13:48:21
阅读次数:
173
1、虚拟机在首次加载Java类时,会对静态初始化块、静态成员变量、静态方法进行一次初始化 2、只有在调用new方法时才会创建类的实例 3、类实例创建过程:按照父子继承关系进行初始化,首先执行父类的初始化块部分,然后是父类的构造方法;再执行本类继承的子类的初始化块,最后是子类的构造方法 4、类实例销毁 ...
分类:
编程语言 时间:
2016-05-31 13:42:37
阅读次数:
221
1.类的加载概述和加载时机 * A:类的加载概述 * 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化。 * 加载 * 就是指将class文件读入内存,并为之创建一个Class对象。任何类被使用时系统都会建立一个Class对象。 * 连接 ...
分类:
其他好文 时间:
2016-05-17 11:05:11
阅读次数:
257