What will happen when you attempt to compile and run the following code?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
public class test{ static { int x= 5 ; } static int x,y; public static void main(String args[]){ x--; myMethod( ); System.out.println(x+y+ ++x); } public static void myMethod( ){ y=x++ + ++x; } }
|
static{int x = 5;}用static修饰的代码块表示静态代码块,当Java虚拟机(JVM)加载类时,就会执行该代码块。但是这个x的作用范围在static{}之内, 不影响static int x, y;中的x, main里面的x是第二个x。
public class Test{
static{
int x=5;
System.out.println("x = " + x);
}
static int x,y;
public static void main(String args[]){
x--; //x = -1
myMethod( );
System.out.println(x+y+ ++x); // 1 + 0 + 2
}
public static void myMethod( ){
y=x++ + ++x; // y = -1 + 1 ; x = 1
}
}