类何时被java类装载器装入系统
(1) 当使用该类访问它的静态成员变量或使用该类调用其静态方法时,这个时候,尽管没有创建该类的对象,但该类还是被装入系统了。
(2) 当使用new关键字,创建该类的对象时,该类也将被装入系统。
而静态初始化块,只在类被java类装载器第一次装入系统时才被调用,且在整个过程中只调用这一次。
下面例子说明了这一点:
public class ClassGrade {
public static void main(String[] args) {
//访问Student类的静态成员变量sid,类被第一装入系统,静态初始化块被调用
Student.sid = 25;
System.out.println(Student.sid);
//用new关键字创建Student对象s,类被第二次装入系统,由于是第二次装入系统,
//所以静态代码块不会被调用(静态代码块只会在系统装入第一次被调用)
Student s = new Student();
System.out.println(s.toString());
}
}
class Student {
private String name = "William";
private int age = 22;
static int sid;
static {
System.out.println("I am a student ...");
}
public String toString(){
return this.name + "," + this.age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
运行上述代码能很清晰的了解结果。
分享到:
相关推荐
`ClassLoader`是Java运行时系统的一个核心组件,负责查找和装入类文件。 - **`ClassLoader`**:这是Java中的一个抽象类,定义了几个关键的方法来支持类的装载。 - **`loadClass(String name, boolean resolve)`**...
在Java中,类装载器 把一个类装入Java虚拟机中,要经过三个步骤来完成:装载、链接和初始化。其中链接又可以分成校验、准备和解析三步,除了解析外,其它步骤是严格按照顺序完成的。各个步骤的主要工作如下: * ...
3. **应用程序类装载器(Application Class Loader)**:它是默认的应用程序类装载器,负责加载用户类路径(`java.class.path`)中定义的类。用户可以通过环境变量`CLASSPATH`来控制哪些类路径被包含在内。应用程序类...
Java装载问题,也称为装载问题或装载平衡问题,是一个经典的优化问题,主要研究如何将一组物品装入最小数量的容器中,使得每个容器的装载量不超过其最大容量,并且尽可能地减少使用的容器数量。在Java编程中,解决这...
- 当所有可以装入当前箱子的物品都被装入后,增加一个新的箱子,重新开始装箱过程。 4. **输出结果**: - 输出所需的总箱子数。 - 对于每个箱子,输出其中所含物品的信息以及剩余的空间大小。 #### 三、代码...
Java的运行环境主要由Java虚拟机(JVM)支撑,包括类装载器、字节码校验器、解释器、代码生成器和运行支持库等组件。类装载器负责加载类文件,字节码校验器确保代码的安全性,解释器则将Java字节码转换为机器码并...
本文介绍了一种在Web环境下实现Java表达式的动态编译与计算的方法,该方法利用Java SE 6提供的编译器API实现动态编译,自定义类装载器装入字节代码,并使用反射机制调用计算方法,实现了Java表达式的动态编译与计算...
系统类装载器通常负责装入第三方库和用户自定义的类,而扩展类装载器则负责装入 Java 扩展机制中的类。 - **自定义装载器**:开发者可以创建自己的类装载器来控制类的装载过程,例如,Servlet 引擎通常会使用自定义...
该问题的基本形式是:给定一系列物品(如集装箱),每个物品都有一定的重量,现在有一个承重有限的容器(如一艘船或一辆卡车),目标是选择一部分物品装入容器中,使得容器所装载的物品总重量尽可能接近但不超过其...
Java 中的 static 关键字 ...在 Java 中,类装载器把一个类装入 Java 虚拟机中,要经过三个步骤来完成:装载、链接和初始化,其中链接又可以分成校验、准备和解析三步,除了解析外,其它步骤是严格按照顺序完成的。
if (W )//如果足够装,全部装入 return W; sort(Q, Q + n, comp1); //首先,将各物品按照重量从大到小进行排序; Load K; K.w = new int[n + 1]; for (int j = 0; j ; j++) K.w[j + 1] = w[Q[j].ID];...
JVM中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader 是一个重要的Java运行时系统组件。它负责在运行时查找和装入类文件的类。 1说说JVM原理?内存泄露与溢出区别,何时产生内存泄露? 编译源代码为...
类装载器(Classloader)负责加载程序所需的所有类,确保每个类都在自己的名字空间中,避免类之间的相互影响。通过这种方式,JVM实现了高效的代码执行,同时确保了代码的隔离和安全性。 代码装入后,解释器会为符号...
代码源(Code Sources)包含类的从哪里装载的位置信息和对类签名信息,保护域(Protection Domains)是赋予代码源的权限的集合。 Java 密码学结构是指 Java 平台上实现密码学算法的机制。 Java 密码学结构包括对称...
oClassLoader.loadClass()(使用指定的Classloader进行装载)oClass.forName()(使用当前类的Caller Classloader进行装载)当调用上述方法的时候,指定的Class(以类名为参数)由Classloader装入。这两个方法的行为...
在这个问题中,我们有多个矩形(代表箱子)需要装入一个更大的矩形(代表车子)内,目标是最大化装载效率,即尽可能减少空间浪费。二叉树在这里的作用是帮助我们有效地组织和查找合适的装箱位置。 在Java实现中,`...
- **类加载器的角色:** 类的装载是由`ClassLoader`及其子类实现的,它们负责在运行时查找并装入类文件。 - **类加载过程:** 类加载的过程包括加载(Loading)、验证(Verification)、准备(Preparation)、解析...