关于以下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。