关于JAVA的一道静态代码块的方法执行顺序的问题,输出什么

2025-03-06 03:13:21
推荐回答(3个)
回答1:

你的代码myMethod()方法中的代码报错

Invalid argument to operation ++/--


建议改成如下:

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

输出结果为:3

回答2:

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);
}
/**
我们来分析下,加载及执行过程:
首先进入主入口main,要先加载其所在类Static,没有父类,直接声明静态变量,执行静态代码,但是静态代码中的x与静态变量x是不同的,因为它是重新声明过的,因此静态变量默认初始化为0。
然后执行x--,x变为-1
执行静态方法,(x++) + (++x),x首先参与计算再自增,然后先自增再参与计算
因为y= -1 + 1,x变为1
最后执行x + y + ++x,x + y 为 1+0,再加上自增后的x,2,最后输出为1+2,即3  
**/

回答3:

结果为3
先执行 static {

int x = 5;

}