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

帮忙解释一下运行结果。
public class Static{ 
  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; 
  } 
到底执行没,感觉不起作用啊。

还有调用了myMethod();后,Y值跟着改了?迷惑了。

------解决方案--------------------
Java code

public class Static {
    static {
        int x = 5;//1、这个是局部变量和下面的x成员变量没关系 
    }
    static int x, y;//2、

    public static void main(String args[]) {
        x--;//3、int类型初始化默认是0,x--此时x为-1
        myMethod();
        System.out.println(x + y + ++x);//5、此时x=1,y=0,++x和下面的一样是先将x+1此时x为2,所以结果是3
    }

    public static void myMethod() {
        y = (x++) + (++x);//4、x++将x先取值-1此时x++的值为-1,,然后将x+1变成0,后面的是先将x+1此时++x为1,注意此x已经为1了,所以y=-1+1为0;
    }
}