当前位置: 代码迷 >> J2SE >> java基础的一个简单有关问题,关于static关键字
  详细解决方案

java基础的一个简单有关问题,关于static关键字

热度:194   发布时间:2016-04-24 12:34:37.0
java基础的一个简单问题,关于static关键字
下面这段程序的执行过程是怎样的,求详细解说,static代码快为何没有执行到?

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


------解决方案--------------------
Java code
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;    }}
------解决方案--------------------
Java code
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;        }}
  相关解决方案