`
advance0683
  • 浏览: 50525 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

类何时被java类装载器装入系统

阅读更多

类何时被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;
	}
}

 

运行上述代码能很清晰的了解结果。

 

 

 

 

 

 

 


 

分享到:
评论

相关推荐

    Java虚拟机类装载的原理及实现

    `ClassLoader`是Java运行时系统的一个核心组件,负责查找和装入类文件。 - **`ClassLoader`**:这是Java中的一个抽象类,定义了几个关键的方法来支持类的装载。 - **`loadClass(String name, boolean resolve)`**...

    Java虚拟机类装载.doc

    在Java中,类装载器 把一个类装入Java虚拟机中,要经过三个步骤来完成:装载、链接和初始化。其中链接又可以分成校验、准备和解析三步,除了解析外,其它步骤是严格按照顺序完成的。各个步骤的主要工作如下: * ...

    WAS+V7+理解类装入器-红皮书.pdf

    3. **应用程序类装载器(Application Class Loader)**:它是默认的应用程序类装载器,负责加载用户类路径(`java.class.path`)中定义的类。用户可以通过环境变量`CLASSPATH`来控制哪些类路径被包含在内。应用程序类...

    java装载问题算法

    Java装载问题,也称为装载问题或装载平衡问题,是一个经典的优化问题,主要研究如何将一组物品装入最小数量的容器中,使得每个容器的装载量不超过其最大容量,并且尽可能地减少使用的容器数量。在Java编程中,解决这...

    java 装箱问题附有结果

    - 当所有可以装入当前箱子的物品都被装入后,增加一个新的箱子,重新开始装箱过程。 4. **输出结果**: - 输出所需的总箱子数。 - 对于每个箱子,输出其中所含物品的信息以及剩余的空间大小。 #### 三、代码...

    Java的运行系统与程序编写.pptx

    Java的运行环境主要由Java虚拟机(JVM)支撑,包括类装载器、字节码校验器、解释器、代码生成器和运行支持库等组件。类装载器负责加载类文件,字节码校验器确保代码的安全性,解释器则将Java字节码转换为机器码并...

    Web环境下Java表达式的动态编译与计算.pdf

    本文介绍了一种在Web环境下实现Java表达式的动态编译与计算的方法,该方法利用Java SE 6提供的编译器API实现动态编译,自定义类装载器装入字节代码,并使用反射机制调用计算方法,实现了Java表达式的动态编译与计算...

    OFBiz 开发指南系列2

    系统类装载器通常负责装入第三方库和用户自定义的类,而扩展类装载器则负责装入 Java 扩展机制中的类。 - **自定义装载器**:开发者可以创建自己的类装载器来控制类的装载过程,例如,Servlet 引擎通常会使用自定义...

    装载问题-回溯算法-java实现

    该问题的基本形式是:给定一系列物品(如集装箱),每个物品都有一定的重量,现在有一个承重有限的容器(如一艘船或一辆卡车),目标是选择一部分物品装入容器中,使得容器所装载的物品总重量尽可能接近但不超过其...

    Java中的static关键字

    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];...

    java核心面试技术点

    JVM中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader 是一个重要的Java运行时系统组件。它负责在运行时查找和装入类文件的类。 1说说JVM原理?内存泄露与溢出区别,何时产生内存泄露? 编译源代码为...

    Java运行原理与Java虚拟机.pdf

    类装载器(Classloader)负责加载程序所需的所有类,确保每个类都在自己的名字空间中,避免类之间的相互影响。通过这种方式,JVM实现了高效的代码执行,同时确保了代码的隔离和安全性。 代码装入后,解释器会为符号...

    Java安全技术.pptx

    代码源(Code Sources)包含类的从哪里装载的位置信息和对类签名信息,保护域(Protection Domains)是赋予代码源的权限的集合。 Java 密码学结构是指 Java 平台上实现密码学算法的机制。 Java 密码学结构包括对称...

    金蝶Apusic应用服务器V6参考b手册b.doc

    oClassLoader.loadClass()(使用指定的Classloader进行装载)oClass.forName()(使用当前类的Caller Classloader进行装载)当调用上述方法的时候,指定的Class(以类名为参数)由Classloader装入。这两个方法的行为...

    二维矩形装箱算法--二叉树--java实现

    在这个问题中,我们有多个矩形(代表箱子)需要装入一个更大的矩形(代表车子)内,目标是最大化装载效率,即尽可能减少空间浪费。二叉树在这里的作用是帮助我们有效地组织和查找合适的装箱位置。 在Java实现中,`...

    java高级工程师-笔试题及答案.docx

    - **类加载器的角色:** 类的装载是由`ClassLoader`及其子类实现的,它们负责在运行时查找并装入类文件。 - **类加载过程:** 类加载的过程包括加载(Loading)、验证(Verification)、准备(Preparation)、解析...

Global site tag (gtag.js) - Google Analytics