下列哪项不属于java类加载过程_Java 类的加载过程(阿里面试题)

/*** 加载方法不等于执行方法,初始化变量则会赋值

* 类加载顺序应为 加载静态方法-初始化静态变量-执行静态代码块

* 实例化时 先加载非静态方法-实例化非静态变量-执行构造代码块-执行构造函数

*@authorpanteng

**/

public classStaticTest {/**第一个加载*/

public static int k = 0;/**第二个加载,因为是new一个实例,

* 首先初始化j 打印出 1:j i=0 n=0

* 执行构造块 打印出 2:构造快 i=1 n=1

* 执行构造方法 打印出 3:t1 i=2 n=2

* 实例化完成*/

public static StaticTest t1 = new StaticTest("t1");/**第三个加载 过程同上

* 首先初始化j 打印出 4:j i=3 n=3

* 执行构造块 打印出 5:构造快 i=4 n=4

* 执行构造方法 打印出 6:t2 i=5 n=5*/

public static StaticTest t2 = new StaticTest("t2");/**第四个加载

* 打印出 7:i i=6 n=6*/

public static int i = print("i");/*** 第五个加载*/

public static int n = 99;/*** 此变量在类加载的时候并不初始化,在实例化类的时候初始化*/

public int j = print("j");

{

print("构造快");

}/*** 第六个加载 此时,n已经被初始化 所以打印出

* 8:静态块 i=7 n=99*/

static{

print("静态块");

}//-----------以上属于类加载---------------------

/*** 实例化过程:

* 首先加载非静态方法集;

* 初始化非静态变量:9:j i=8 n=100

* 执行构造块:10:构造快 i=9 n=101

* 执行构造方法:11:init i=10 n=102

* 实例化完成*/

/*** 执行构造函数 实例化完成

*@paramstr*/

publicStaticTest(String str) {

System.out.println((++k) + ":" + str + " i=" + i + " n=" +n);++n;++i;

}/*** 这个应该是最先加载 但是,加载不等于执行

* 因为如果不加载此函数,静态变量是无法初始化的

*@paramstr

*@return

*/

public static intprint(String str) {

System.out.println((++k) + ":" + str + " i=" + i + " n=" +n);++i;return ++n;

}public static voidmain(String[] args) {/**首先加载类,然后实例化:

* 类加载过程:

* 首先加载所有的静态方法,但不执行;

* 然后按照静态变量的顺序开始初始化

* 静态变量初始化完毕后执行静态构造块(不执行构造块)

* 此时类加载完毕

* 实例化过程:

* 加载非静态方法

* 初始化非静态变量

* 执行构造代码块

* 执行构造函数

* 此时实例化完毕*/StaticTest t= new StaticTest("init");

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值