阿里巴巴2014年上海笔试题---类初始化及执行顺序


package com.alibaba.interview;

/**
* 问题:下面语句的输出是什么?
*/


/**
* 非静态变量属于某一指定对象,而不是属于类
* 所以,每次new一个Test对象时,就会执行public int j = print("j")这行代码
*
*/
public class Test {

public static int k = 0;

public static Test t1 = new Test("t1");

public static Test t2 = new Test("t2");

/**
* 在这之前,i的值为0
*/
public static int i = print("i");
/**
* 在这之前,n的值为0
*/
public static int n = 99;

public int j = print("j");

/**
* 构造代码块是给所有对象的共性内容进行初始化,是在建立对象的时候才执行
* 并且优于构造函数
*/
{
print("构造块");
}
/**
* 静态代码块随着类的加载二执行,只执行一次,并优于主函数
*/
static{
print("静态块");
}

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 void main(String[] args) {
new Test("init");
}
}



运行结果:

1 : j i= 0 n=0
2 : 构造块 i= 1 n=1
3 : t1 i= 2 n=2
4 : j i= 3 n=3
5 : 构造块 i= 4 n=4
6 : t2 i= 5 n=5
7 : i i= 6 n=6
8 : 静态块 i= 7 n=99
9 : j i= 8 n=100
10 : 构造块 i= 9 n=101
11 : init i= 10 n=102
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值