日期:2014-05-20 浏览次数:20844 次
public class Static{ //这个静态语句块会首先执行,只是这里的x是局部变量,下面的x的全局变量不一样,所以这里的x的值 为0; static { int x = 5; System.out.println("x5=="+x); } static int x, y; //x,y为全局变量 public static void main(String args[]) { x--; myMethod(); System.out.println(x + y + ++x); } public static void myMethod() { y = x++ + ++x; } }
------解决方案--------------------
public class Static { static {//这个x的作用域在大括号之内 出了大括号就无效 int x = 5;//加载类的时候就执行了 System.out.println(x);//output;5 这里其实是最近的x } static int x, y; public static void main(String args[]) { System.out.println(x);//output;0 这里打印的其实是第二个x x--;// x = -1 myMethod(); System.out.println(x + " " + y);//x = 1 因为加了两次 y = -1 + 1 = 0 注意 前置++ 和 后置++ System.out.println(x + y + ++x); //output : 1+0+2 = 3 } public static void myMethod() { y = x++ + ++x; } }