Java类中代码的加载顺序
来源:互联网 发布:紫菜三角梅淘宝店铺 编辑:程序博客网 时间:2024/06/14 03:29
主要探讨java中静态变量(static修饰的常量),静态代码块(static{}包裹),非静态代码块({}包裹),构造方法的调用顺序。
- 静态变量
- 静态代码块
- 非静态代码块
- 构造方法
- 假设无父类静态变量,静态方法,构造方法的调用后的执行过程
- 实际情况静态变量,静态方法,构造方法的调用后的执行过程
- 系统总结
静态常量
public static int key=1
静态代码块
static
{
System.out.println(“父类静态代码块2”);
}
非静态代码块
{
System.out.println(“父类非静态代码块”);
}
构造方法
public parent()
{
System.out.println(“父类非静态构造方法”);
}
1.假设无父类静态变量,静态方法,构造方法的调用后的执行过程
public class parent { public static int key = method1(); public static int method1() { System.out.println("父类静态方法块1(标记是否初始化静态常量)"); return 2; } public static void method2() { System.out.println("父类静态方法块2"); } static { System.out.println("父类静态代码块1"); } static { System.out.println("父类静态代码块2"); } { System.out.println("父类非静态代码块"); } public parent() { System.out.println("父类非静态构造方法"); } }
静态变量
调用 System.out.println(parent.key);
结果是:
父类静态方法块1(标记是否初始化静态常量)
父类静态代码块1
父类静态代码块2
2
调用 parent.method2();
父类静态方法块1(标记是否初始化静态常量)
父类静态代码块1
父类静态代码块2
父类静态方法块2
调用 new parent();
父类静态方法块1(标记是否初始化静态常量)
父类静态代码块 1
父类静态代码块 2
父类非静态代码块
父类非静态构造方法
综上
- 所有涉及类的内容时都会默认初始化静态常量,静态代码块。
- 静态方法调用之前默认加载了静态常量,静态代码块。所以在静态方法中可以使用静态常量
2.实际情况静态变量,静态方法,构造方法的调用后的执行过程
public class child extends parent { public static int key = childmethod1(); public static int childmethod1() { System.out.println("子类静态方法块1(标记是否初始化静态常量)"); return 1; } public static void childmethod2() { System.out.println("子类静态方法块2"); } static { System.out.println("子类静态代码块1"); } static { System.out.println("子类静态代码块2"); } { System.out.println("子类非静态代码块"); } public child() { System.out.println("子类非静态构造方法"); } }
调用System.out.println(child.key);
父类静态方法块1(标记是否初始化静态常量)
父类静态代码块1
父类静态代码块2
子类静态方法块1(标记是否初始化静态常量)
子类静态代码块1
子类静态代码块2
1
调用 child.childmethod2();
父类静态方法块1(标记是否初始化静态常量)
父类静态代码块1
父类静态代码块2
子类静态方法块1(标记是否初始化静态常量)
子类静态代码块1
子类静态代码块2
子类静态方法块2
调用 new child();
父类静态方法块1(标记是否初始化静态常量)
父类静态代码块1
父类静态代码块2
子类静态方法块1(标记是否初始化静态常量)
子类静态代码块1
子类静态代码块2
父类非静态代码块
父类非静态构造方法
子类非静态代码块
子类非静态构造方法
综上 实际中涉及类的调用,首先点用父类的静态变量,静态代码块,然后调用子类的静态变量,静态代码块。
在创建对象时首先一些初始化后调用父类的非静态代码块,父类的构造方法,然后执行子类的静态代码块,子类的构造方法。
系统总结
1.只要涉及这个类,必定会初始化此类及其父类的静态变量及其静态代码块
2.创建对象时会默认调用父类的非静态代码块,构造方法,然后执行子类的非静态代码块及其构造方法。
- Java类中代码的加载顺序
- java类中代码加载的顺序
- JAVA中代码的加载顺序
- Java中类代码加载的顺序详解
- java类中代码加载顺序
- java中static修饰符的代码的加载顺序
- java中各种代码块的加载顺序
- java 中类的加载顺序
- Java中,类的加载顺序
- java 中类的加载顺序
- java 中类的加载顺序
- java 中类的加载顺序
- java中类的加载顺序
- java中类的加载顺序
- Java 中类的加载顺序
- JAVA中类的加载顺序
- java中类的加载顺序
- java 中类的加载顺序
- org.apache.hadoop.ipc.Client: Retrying connect to server
- mpg123 把mp3文件解码到标准输出设备(stdout)
- HDU——1393Weird Clock(水题,注意题意)
- JAVA应用程序获取当前路径
- 忙些更好
- Java类中代码的加载顺序
- [C语言]查找链表的中间元素
- 各种排序算法的总结和比较
- [从头学数学] 第88节 折线统计图
- codeforces626E.Simple Skewness(三分)
- SAP外向交货单中的批次拆分应用于免费货物的小问题
- USACO 5.4 Canada Tour dp
- 初识 TextKit
- 海信智能电视如何看电视直播