网站开发计划和预算,网站后台用什么程序做,wordpress手机适配插件,wordpress大开速度慢这其实是去年校招时我遇到的一道阿里巴巴的笔试题(承认有点久远了-。-)#xff0c;嗯#xff0c;如果我没记错的话#xff0c;当时是作为Java方向的一道选做大题。当然题意没有这么直白#xff0c;题目只要求你写出程序运行后所有System.out.println的输出结果#xff0c;…这其实是去年校招时我遇到的一道阿里巴巴的笔试题(承认有点久远了-。-)嗯如果我没记错的话当时是作为Java方向的一道选做大题。当然题意没有这么直白题目只要求你写出程序运行后所有System.out.println的输出结果其中程序是题目给的而各个System.out.println的执行顺序不同会导致最后程序输出的结果也不同。具体的题目我肯定记不清不过我们可以换个直接的问法如果类A和类B中有静态变量静态语句块非静态变量非静态语句块构造函数静态方法非静态方法同时类A继承类B请问当实例化A时类内部的加载顺序是什么?当时我也是一头雾水事后我就自己写了一个小Demo这才知道了类内部的实际加载顺测试代码如下Class B:public class B{//静态变量static int i1;//静态语句块static {System.out.println(Class B1:static blocksi);}//非静态变量int j1;//静态语句块static{i;System.out.println(Class B2:static blocksi);}//构造函数public B(){i;j;System.out.println(constructor B: ii,jj);}//非静态语句块{i;j;System.out.println(Class B:common blocksii,jj);}//非静态方法public void bDisplay(){i;System.out.println(Class B:static void bDisplay():ii,jj);return ;}//静态方法public static void bTest(){i;System.out.println(Class B:static void bTest():ii);return ;}}Class A:public class A extends B{//静态变量static int i1;//静态语句块static {System.out.println(Class A1:static blocksi);}//非静态变量int j1;//静态语句块static{i;System.out.println(Class A2:static blocksi);}//构造函数public A(){super();i;j;System.out.println(constructor A: ii,jj);}//非静态语句块{i;j;System.out.println(Class A:common blocksii,jj);}//非静态方法public void aDisplay(){i;System.out.println(Class A:static void aDisplay():ii,jj);return ;}//静态方法public static void aTest(){i;System.out.println(Class A:static void aTest():ii);return ;}}Class ClassLoading :public class ClassLoading {public static void main (String args[]) {A anew A();a.aDisplay();}}程序运行结果如图通过上述示图我们可以比较清晰的看出java类的整个加载过程。若要加载类A则先加载执行其父类B(Object)的静态变量以及静态语句块(执行先后顺序按排列的先后顺序)。然后再加载执行类A的静态变量以及静态语句块。(并且1、2步骤只会执行1次)若需实例化类A则先调用其父类B的构造函数,并且在调用其父类B的构造函数前,依次先调用父类B中的非静态变量及非静态语句块.最后再调用父类B中的构造函数初始化。然后再依次调用类A中的非静态变量及非静态语句块.最后调用A中的构造函数初始化。( 并且3、4步骤可以重复执行)而对于静态方法和非静态方法都是被动调用,即系统不会自动调用执行,所以用户没有调用时都不执行,主要区别在于静态方法可以直接用类名直接调用(实例化对象也可以),而非静态方法只能先实例化对象后才能调用。OK今天就总结到这里了如果有地方说的不好或有错误的地方欢迎大家指出定当改正谢谢。