my java note -------类的初始化和加载
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了my java note -------类的初始化和加载相关的知识,希望对你有一定的参考价值。
java 的初始化和类加载
1. java 对象初始化时,会先加载对应的类,随后加载其基类(如果存在基类);
2. 先从基类执行static 初始化,在执行子类static 初始化;
3. 此时,类加载完毕,开始对象的初始化。
4. 对象的属性得到初值:
1> 基本值类型 默认值
2> 对象句柄为null
5.先执行基类初始化{
1>先:属性定义时的初始化
2>后:执行构造器方法
}在执行衍生类初始化。
测试代码:
package mytest; public class TestLoad extends Parent{ int k = prt("TestLoad.k initialized"); TestLoad() { System.out.println("k = " + k); k = k+1; System.out.println("k = " + k); System.out.println("j = " + j); } static int x2 = prt("static TestLoad.x2 initialized"); static int prt(String s) { System.out.println(s); return 63; } public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("Beetle constructor"); TestLoad b = new TestLoad(); } } class Parent { int i =prt("Parent.i initialized"); int j; Parent() { System.out.println("i = " + i + ", j = " + j); j = 39; } static int x1 = prt("static Parent.x1 initialized"); static int prt(String s) { System.out.println(s); return 47; } }
输出结果:
static Parent.x1 initialized
static TestLoad.x2 initialized
Beetle constructor
Parent.i initialized
i = 47, j = 0
TestLoad.k initialized
k = 63
k = 64
j = 39
显然从结果中可以看出执行顺序。
以上是关于my java note -------类的初始化和加载的主要内容,如果未能解决你的问题,请参考以下文章