日期:2014-05-20  浏览次数:20773 次

关于以下application的运行顺序问题
关于以下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

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