所有的类都是在对其第一次使用时,动态的加载到JVM中的。当程序创建第一个对类的静态成员的引用时,就会加载这个类。这个证明构造器也是类的静态方法,即使在构造器之前并没有使用static关键字。因此,使用new操作符创建类的新对象也会被当作对类的静态成员的引用。
因此,Java程序在他开始运行之前并非完全加载,其各个部分是在必需时才加载的。这一点与许多传统语言都不同。动态加载使能的行为,在诸如c++这样的静态加载语言中是很难或者根本不可能复制的。
类加载器首先检查这个类的Class对象是否已经加载。如果尚未加载,默认的类加载器就会根据类名查找.class文件
(例如,某个附加类加载器可能会在数据库中查找字节码)。在这个类的字节码被加载时,它们会接收验证,以确保其没有被破坏,并且不包含不良代码(这是Java中用于安全防范目的的措施之一)。
一旦某各类的Class对象被载入内存,它就被用来创建这个类的所有对象。
因此,Java程序在他开始运行之前并非完全加载,其各个部分是在必需时才加载的。这一点与许多传统语言都不同。动态加载使能的行为,在诸如c++这样的静态加载语言中是很难或者根本不可能复制的。
类加载器首先检查这个类的Class对象是否已经加载。如果尚未加载,默认的类加载器就会根据类名查找.class文件
(例如,某个附加类加载器可能会在数据库中查找字节码)。在这个类的字节码被加载时,它们会接收验证,以确保其没有被破坏,并且不包含不良代码(这是Java中用于安全防范目的的措施之一)。
一旦某各类的Class对象被载入内存,它就被用来创建这个类的所有对象。