关于以下application的说明,正确的是(C ), 为什么是这个结果,请问各位大虾这个程序的运行顺序是什么,是先main方法,还是先初始化块或者先静态常量初始化???还有就是一个application可以有两个静态初始化块吗?如果不可以,那么这个程序怎么不会出错呢? 
1. class StaticStuff 
2. { 
3. static int x=10; 
4. static { x+=4;} 
5. public static void main(String args[]) 
6. { 
7. System.out.println("x=" +x); 
8. } 
9. static {x/=3;} 
10. } 
A. 4行与9行不能通过编译,因为缺少方法名和返回类型 
B. 9行不能通过编译,因为只能有一个静态初始化器 
C. 编译通过, 执行结果为: x=4 
D. 编译通过, 执行结果为: x=3

解决方案 »

  1.   

    静态块会首先执行,如果有多个静态快,会按从上到下的顺序首先执行静态块,在一个类里面可以拥有多个静态块.上面的题执行顺序是首先x=10 ---> x+4=14 ---> x/3=4   因为x为int型,小数部分会被舍弃,所以就得到14/3=4。
      

  2.   

    你应该去看一下thinkin java
      

  3.   

    2楼正解。main也是类的一个方法,而类第一次被访问(包括forName)前的时候会调用静态赋值,静态块。