第一部分:classpath是系统的环境变量,就是说JVM加载类的时候要按这个路径下去找,当然这个路径下可以有jar包,那么就是jar包里所有的class。 eclipse build path是eclipse工程里需要的包,也是需要的class,本质上没什么区别。 你可以测试,比如JDK中有个St ...
分类:
编程语言 时间:
2016-11-05 11:34:54
阅读次数:
143
第一部分:classpath是系统的环境变量,就是说JVM加载类的时候要按这个路径下去找,当然这个路径下可以有jar包,那么就是jar包里所有的class。 eclipse build path是eclipse工程里需要的包,也是需要的class,本质上没什么区别。 你可以测试,比如JDK中有个St ...
分类:
编程语言 时间:
2016-11-05 11:30:07
阅读次数:
198
字节码格式字节码是JVM的机器语言。JVM加载类文件时,对类中的每个方法,它都会得到一个字节码流。这些字节码流保存在JVM的方法区中。在程序运行过程中,当一个方法被调用时,它的字节码流就会被执行。根据特定JVM设计者的选择,它们可以通过解释的方式,即时编译(Just-in-time compilation)的方式或其他技术的方式被执行。方法的字节码流就是JVM的指令(instruction)序列。每...
分类:
其他好文 时间:
2016-03-28 00:15:04
阅读次数:
171
在Java中,类装载器把一个类装入Java虚拟机中,要经过三个步骤来完成:装载、链接和初始化,其中链接又可以分成校验、准备、解析装载:查找和导入类或接口的二进制数据;链接:执行下面的校验、准备和解析步骤,其中解析步骤是可以选择的;校验:检查导入类或接口的二进制数据的正确性;准备:给类的静态变量分配并...
分类:
其他好文 时间:
2015-09-05 23:39:07
阅读次数:
324
总结:静态代码块总是最先执行。非静态代码块跟非静态方法一样,跟对象有关。只不过非静态代码块在构造函数之前执行。父类非静态代码块、构造函数执行完毕后(相当于父类对象初始化完成), 才开始执行子类的非静态代码块和构造函数。 相同点:都是在JVM加载类时且在构造方法执行之前执行,在类中都可以定义...
分类:
其他好文 时间:
2015-08-12 18:31:02
阅读次数:
235
java易混淆概念之类变量、成员变量、局部变量类变量、成员变量、局部变量类变量(也叫静态变量)是类中独立于方法之外的变量,用static修饰。(static表示“全局的”、“静态的”,用来修饰成员变量和成员方法,或静态代码块(静态代码块独立于类成员,jvm加载类时会执行静态代码块,每个代码块只执行一...
分类:
编程语言 时间:
2015-07-01 13:56:13
阅读次数:
180
一、描述
java中的类在什么时候被JVM虚拟机加载呢?因为静态成员初始化的时候会在类首次加载的时候执行, 我们通过测试一个静态代码块的执行时间来判断JVM加载该类的时间。
总结:JVM只在需要某个类或者使用Class.forName(className)强制加载类的时候才会被调用,如果只是声明某个类的引用,而没有创建对象则不会加载该类。
二、源代码
1、只是声明某个类的引用,而没...
分类:
编程语言 时间:
2015-04-25 18:22:59
阅读次数:
177
Java静态代码块、构造代码块、构造方法的执行顺序静态代码优先于非静态的代码,是因为被static修饰的成员都是类成员,会随着JVM加载类的时候加载而执行,而没有被static修饰的成员也被称为实例成员,需要创建对象才会随之加载到堆内存。所以静态的会优先非静态的。
执行构造器(构造方法)的时候,在执行方法体之前存在隐式三步:
1,super语句,可能出现以下三种情况:
1)构造方法体的第一行是...
分类:
编程语言 时间:
2015-04-13 00:27:02
阅读次数:
142