初始化顺序-今年阿里巴巴的一道笔试题

问题描述

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

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呢

解决方案

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

解决方案二:

对了 这个你自己可以写个例子自己调试看,这个也是我自己写例子查看出来,你可以自己先按着自己明白的加载顺序写,然后再加入不明白的那些加载属性 和方法。

时间: 2024-11-03 04:03:11

初始化顺序-今年阿里巴巴的一道笔试题的相关文章

结构体定义-如何定义满足以下的Node与List结构体,今天参加斐讯的一道笔试题。

问题描述 如何定义满足以下的Node与List结构体,今天参加斐讯的一道笔试题. Node包含50个字符.

关于java,一道笔试题

问题描述 //请教一个笔试题,:public static void main(String[] args) {// TODO Auto-generated method stubint i= 0xFFFFFFFA;int j=~i;System.out.println(i);System.out.println(j);}/*结果为什么是:-65为什么*/问题补充:我还以为~是取补的意思...原来是取反.. 解决方案 引用int i= 0xFFFFFFFA; 最高位F对应的2进制表示为1111,

参数传递的一道笔试题

问题描述 Giventhefollowingcodewhatwillbetheoutput?classValHold{publicinti=10;}publicclassObParm{publicstaticvoidmain(Stringargv[]){ObParmo=newObParm();o.amethod();}publicvoidamethod(){inti=99;ValHoldv=newValHold();v.i=30;another(v,i);System.out.print(v.i

分享一道笔试题[有n个直线最多可以把一个平面分成多少个部分]_javascript技巧

复制代码 代码如下: <html> 题:<br /> 有n个直线最多可以把一个平面分成多少个部分<br /><br /> 线条数:<input type="text" id="line"/><br /> 内交点:<label id="innerPoint"></label><br /> 分割数:<label id="part

一道阿里巴巴海量数据笔试题

问题描述 在看到的一道笔试题:搜索引擎的日志要记录所有查询串,有一千万条查询,不重复的不超过三百万.要统计最热门的10条查询串.内存<1G.字符串长0-255(1)主要解决思路(2)算法及其复杂度分析 解决方案 解决方案二:我能想到的就是哈希+堆排序了

二叉树笔试题

题目:输入两棵二叉树A和B,判断树B是不是A的子结构 bool IsChildTree(Node * father, Node * son) { if(father == NULL && son == NULL) return true; if(father == NULL && son != NULL) return false; if(father != NULL && son == NULL) return true; //如果当前结点相同,判断左右子

代码分析-一道Java笔试题,求解答(关于类的加载与初始化)

问题描述 一道Java笔试题,求解答(关于类的加载与初始化) 自己查了一些资料,还是看不懂这个程序的输出结果,求各位详细解释初始化和执行过程,谢! public class Alibaba { public static int k = 0; public static Alibaba t1 = new Alibaba("t1"); public static Alibaba t2 = new Alibaba("t2"); public static int i =

阿里巴巴一道智力题笔试题

问题描述 阿里巴巴一道智力题笔试题 有三张牌A,B,C,其中一张是King.如果你押中了King,那么就获胜,否则就输.现在你选择了押其中的一张牌1,电脑帮你排除了另外两张牌中的一张2,那么你是否重新选择押3,从而更容易获胜? http://www.manong1024.com/q/403 解决方案 google 三扇门问题真怀疑这是不是阿里的题,感觉很低级很low,像庙会灯谜上的题. 解决方案二: 假设挑选A其为king的概率p=1/3剩下的BC中为king的概率p=2/3.假设主持人又给你排

java 笔试题-网易类的初始化的笔试题

问题描述 网易类的初始化的笔试题 public class Father { public static String desc = "Father"; static { System.out.println(desc); } Father(){ System.out.println("Father Constructor"); } String str = fun(); public String fun(){ System.out.println("F