java类的加载过程
程序员文章站
2022-07-11 23:50:03
...
java类的加载过程
package com.study;
public class ClassOrder {
public static void main(String args[]) {
test t = new test("init");
}
}
class test {
/**
* 类的加载过程 :静态代码块、静态属性 是根据程序先后顺序加载,然后是加载静态方法》非静态成员中非静态代码块与非静态属性也是按照顺序加载,然后是构造方法,最后是普通方法
* 注释:
* (1)静态部分先初始化后执行,然后是非静态部分先初始化后执行,另外方法(静态方法、普通方法、构造方法)只在调用时执行
* (2) 静态属性加载完成(也就是初始化,赋予默认值后)会执行(只执行一次),
* 而此时如果调用了实例化过程,则会暂停类的加载,进行实例化。
*
*/
public static test t2 = new test("66");// 此处调用了实例化过程,test 类的加载被暂停,开始加载 ClassOrderTest
//public static int i = print("i");
public static int n = 99;
public int j = print("j");
{
print("构造块");
}
static {
print("静态块");
}
public static int i = print("i");
public static test t1 = new test("t1");
public static long l = 66;
public test(){
System.out.println("ljhfgjk");
}
{
System.out.println("构造快");
}
public test(String str) {
System.out.println((++k) + ":" + str + " i=" + i + " n=" + n);
++i;
++n;
}
public static int print(String str) {
System.out.println((++k) + ":" + str + " i=" + i + " n=" + n);
++n;
return ++i;
}
public static int k = 6;
}
上一篇: Editlogs源码剖析
下一篇: 【学习笔记】Java网络编程
推荐阅读
-
Java日期时间API系列5-----Jdk7及以前的日期时间类TimeUnit在并发编程中的应用
-
Java日期时间API系列12-----Jdk8中java.time包中的新的日期时间API类,日期格式化,常用日期格式大全
-
Java中Date()类 日期转字符串、字符串转日期的问题
-
java类成员默认的可访问性是什么?你猜
-
Java类加载机制详解
-
Java日期时间API系列8-----Jdk8中java.time包中的新的日期时间API类的LocalDate源码分析
-
java包装类和值类型的关系
-
Java中数组操作 java.util.Arrays 类常用方法的使用
-
类加载器的作用
-
java 抽象类和接口的区别详细解析