java基础的一个简单有关问题,关于static关键字
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;
}
}
------解决方案--------------------
下面这段程序的执行过程是怎样的,求详细解说,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; } }