public class Static{
public Static()
{
int x = 5;
}
static int x,y;
public static void main(String args[]){
x--; //x = -1
myMethod(); // y = (1) + 0; x = 1; y = 0
System.out.println(x + y + ++x); // 1 + 0 + 1+1 = 3
}
public static void myMethod(){
y = x++ + ++x;
}
}
看注释,问题的关键Java的表达式运算和C一样从右向左,uoyi在计算x++ + ++x时, 首先x=0, y = 0, 最后x++ 变成 1 得到 x = 1, y= 0
static int x; 对前一定义覆盖了
计算过程
x=0;
x--; x=-1;
x++=-1;(a=x++也可以理解为a=x;x=x+1;) x=0; ++x=1; (a=++x也可以理解为x=x+1;a=x;) )y=0;
x+y+ ++x=1+0+2=3