`

java用户类中内容的加载过程

阅读更多
package com.test.jse;
/**
 * 用户类中内容的加载顺序
 * @author cat
 */
public class ClassLoadOrder {
	static int a = 1; //定义静态变量
	
	//静态方法
	private static void doTell(){
		System.out.println("静态方法的执行!");
	}
	
	static{
		System.out.println("静态代码块的执行"+a);
	}
	
	//构造方法
	ClassLoadOrder(){
		System.out.println("构造方法的执行"+"a="+a+"b="+b );
	}
	
	int b = 2; // 定义一般变量
	
	//一般方法的
	public void doSay(){
		System.out.println("一般方法的执行"+a+"\t"+b);
	}
	
	{
		System.out.println("一般代码块"+"a="+a+"b="+b);
	}
	
	public static void main(String[] args) {
		ClassLoadOrder c = new ClassLoadOrder();
		c.doSay();
		c.doTell();
	}
}
----执行结果------

静态代码块的执行1
一般代码块a=1b=2
构造方法的执行a=1b=2
一般方法的执行1	2
静态方法的执行!


结果解释:第一行,静态代码块1,说明静态常量优先于静态代码块;

              第二行,一般代码块a=1b=2,说明一般常量加载优先于一般代码块;

              第三行,构造方法的执行a=1b=2,说明静态常量和一般常量优先于构造函数;

              第四五行,为方法调用不做比较;

现在可以知道的顺序有:静态常量>静态代码块>构造函数;

                              一般常量>一般代码块>构造函数。

现在将测试代码修改为:
package com.test.jse;

public class StaticCode {
	
	static int a = 2;
	
	private static void doTestTell(){
		System.out.println("静态方法"+a);
	}
	
	static{
		System.out.println("静态代码块"+a);
	}

	public static void main(String[] args) {

	}

}

-----执行结果-----
静态代码块2


结果解释:打印结果说明,类StaticCode 在加载过程中,就已经将静态常量和静态代码块执行了,而静态方法没有执行,

联系之前的测试结果可以得出结论:


                         静态常量>静态代码块>一般常量>一般代码块>构造函数

而类中的静态方法和一般方法只有在调用时才会去执行
分享到:
评论

相关推荐

    java类加载器

    #### 二、类加载过程 类加载过程主要包括三个步骤: 1. **加载**:通过类的全限定名找到该类的二进制字节流。 2. **连接**: - **验证**:确保加载的类文件符合JVM规范,包括字节流文件的格式正确性、元数据的...

    Java类加载器.pdf

    例如,在提供的代码示例中,`Main`类通过`new A()`和`new B()`语句分别实例化了`A`和`B`类,这触发了类加载器对这两个类的加载过程。 #### 类加载器的层次结构 Java中的类加载器通常按照以下层次结构组织: 1. **...

    Java类加载内幕详细讲解

    #### 五、类加载过程详解 类加载的过程主要分为三个阶段:加载(Loading)、连接(Linking)和初始化(Initialization)。 1. **加载**(Loading): - 类加载器查找并加载类的二进制流。 - 创建`java.lang....

    java应用程序类加载器,ClassLoader for java Application

    在压缩包文件`javalauncher`中,可能包含了一个用于启动Java应用程序的自定义类加载器或者类加载辅助工具,帮助开发者更好地管理类的加载过程。这类工具通常会提供更方便的命令行参数,以便于指定类路径、加载特定的...

    Java的类加载器

    Java的类加载器是Java虚拟机(JVM)的核心组件之一,它负责将类的字节码从磁盘、网络或其他数据源加载到内存中,并转换为可执行的Java对象。类加载器不仅关乎程序的运行,还在实现动态加载、插件系统等方面发挥着...

    深入研究Java类加载机制 深入研究Java类加载机制

    通过掌握类加载的过程以及类加载器的工作原理,可以帮助开发者更好地处理类加载过程中可能出现的问题,同时也可以为实现某些特殊需求提供支持。希望本文能够帮助读者更加深入地理解和应用Java类加载机制。

    java类加载原理分析

    Java 类加载原理是Java运行时环境中的核心机制之一,它涉及到类的生命周期、类加载器的层次结构以及类的查找和加载过程。了解这一机制对于深入理解Java平台的工作原理至关重要,尤其是在开发自定义类加载器或者处理...

    JAVA类加载

    而依需求加载则是在程序运行过程中,只有当实际需要使用某个类时,JVM才会加载该类,这有助于减少内存消耗。 **预加载**:在JRE启动时,类加载器会加载`lib`目录下的`rt.jar`中的基础类库,如`java.lang.Object`、`...

    JAVA ClassLoader 讲解 (类加载器)

    ### Java ClassLoader (类加载器)详解 #### 一、教程提示 ...掌握了类加载器的原理和技术,开发者可以更加灵活地管理Java应用程序中的类加载过程,这对于优化性能和增强应用程序的安全性都有重要意义。

    类加载器文件

    通过以上内容可以看出,类加载器在Java程序的运行过程中扮演着非常重要的角色,它不仅是Java程序得以运行的基础,也是实现许多高级特性的关键。理解类加载器的工作原理对于深入掌握Java编程有着重要意义。

    Java类加载原理解析

    当遇到`java.lang.ClassNotFoundException`异常时,通常是因为类加载过程出现了问题。了解类加载机制对于解决这类问题至关重要,同时也有助于深入理解Java虚拟机(JVM)的工作原理。 Java 类加载机制主要由类加载器...

    Java类重新加载101对象类和类加载器Java开发Jav

    在Java开发过程中,理解类加载和重新加载机制对于优化代码性能、处理复杂系统升级以及提高开发效率至关重要。通过掌握这些知识,开发者能够更好地控制和调试他们的应用程序,尤其是在处理大型分布式系统时。 类加载...

    JAVA类加载机制与动态代理

    值得注意的是,接口的加载过程与类加载过程稍有不同。接口在初始化时,并不要求其父接口全部都完成了初始化,只有在真正使用到父接口的时候(如引用接口中定义的常量)才会初始化。 ##### 1.2 类加载的过程 类加载...

    Java 自动加载JAR文件并运行其中的类方法

    5. **异常处理**:在上述过程中,可能会遇到`ClassNotFoundException`、`InstantiationException`、`IllegalAccessException`或`NoSuchMethodException`等异常,因此应进行适当的异常处理。 6. **释放资源**:使用...

    Java类加载说明

    在这个过程中,类加载器(ClassLoader)扮演着关键角色,它负责查找并加载Java类的字节码文件。本文将深入探讨Java类加载的原理、过程以及相关知识点。 首先,我们需要理解类加载的三个基本阶段:加载、验证、准备...

    动态加载类机制JAVA

    在Java编程语言中,动态加载类机制是一种强大的功能,它允许程序在运行时根据需要加载新的类或资源,而不是在编译时确定所有类。这种技术对于提高软件的灵活性、可扩展性和模块化至关重要,特别是在大型系统和插件式...

    java的ClassLoader类加载器机制

    Java的ClassLoader类加载器机制 ...Java 的类加载器机制是 JVM 运行过程中的核心组件,负责加载和管理 Java 类。理解类加载器的工作原理可以帮助开发者更好地理解 JVM 的运行机制,提高代码的可维护性和可扩展性。

    深入研究Java的类加载机制.pdf

    自定义类加载器是Java虚拟机中的一个特殊类加载器,允许用户自定义类加载器,以便于加载特殊的类文件。自定义类加载器可以用来加载加密后的类文件、从数据库中加载类文件等。 Java类加载机制的应用: Java类加载...

Global site tag (gtag.js) - Google Analytics