chenglibility 2013-10-02 08:30 采纳率: 100%
浏览 2140
已采纳

今年阿里巴巴的一道笔试题

public class Test1 {
public static int k = 0;
public static Test1 t1 = new Test1("t1");
public static Test1 t2 = new Test1("t2");
public static int i = print("i");
public static int n = 99;
public int j = print("j");
{
print("构造块");
}
static{
print("静态块");
}
public Test1(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) {
Test1 t = new Test1("init");
}
}
//请高手解释一下输出结果为啥是那些,为啥第一行输出的时候n=0呢

  • 写回答

2条回答 默认 最新

  • ludx212 2013-10-11 07:21
    关注

    静态属性->静态快->静态方法->构造快->普通属性->普通方法。这里第一次加载按着顺序加载属性,类开始初始化 但是因为其他静态的属性都只初始化一次 现在没有初始化 所以没有识别到,成员属性却被加载到了,然后加载构造快,静态属性加载一次就不再加载,但是成员变量却每次构造的时候都加载,一步步下来你自己就清楚了。n第一次根本没有加载到了,只能按着默认赋值了。真正的按着顺序加载到那个位置的时候 n才真的被赋值了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境