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值跟着改了?迷惑了。

解决方案 »

  1.   

    public static void myMethod(){  
      y = x+++++x;  
      }
    Invalid argument to operation ++/-- 你这种写法编译都不过吧?
      

  2.   

    你是想表达
    y = (x++)+(++x);   吗
    如果是 结果为3,main  x--后 x值为-1  因为默认值为0,与之前的那个5是没有任何关系的, myMethod()这个方法,并没有返回y的值 ,当然后释放了。
      

  3.   

    看不明白,直接输出x=-1;直接输出y=0;直接输出++x 为0;不知道为什么最后就输出3了,等待别人解答
      

  4.   


    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;
    }
    }
      

  5.   

    主要是y = x+++++x;比较麻烦,执行这条语句之前x=-1
    y = x+++++x => y = (x++) + (++x) => y = -1 + (++x)//x = 0
    => y = -1 + 1 //x = 1 => y = 0所以x + y + ++x的结果为3
      

  6.   

    “int x = 5;//1、这个是局部变量和下面的x成员变量没关系 ”
    这是最关键的,其他的都相对好理解。
      

  7.   


    我不赞成2楼的说法,x、y都是static的,怎么释放了呢?