今天群里看到一位老哥发了一个自己面试的Java题目,要求得出结果`。
i++先计算再自增,++i先自增再计算
public class Competition{
static{
int x=5;
}
static int x,y;
public static void main(String[] args)
{
x--;
myMethod();
System.out.println(x +y++ +x)
}
private static void myMethod()
{
y=x++ + ++x;
}
}
结果为 2;
他的主要运行过程如下:
package wgy.mjw.ActionStudy;
public class Competition {
static {
int x=5;
}
//静态变量在没有赋值的情况下默认为0
static int x,y;
public static void main (String[] args)
{
//x-- 先赋值再自减
int m=x--;
//因此m的结果应该为0
System.out.println(m);
//对于x 当再次调用的时候他就已经完成自减的操作,所以结果为-1
System.out.println(x);
// 调用方法直接转移到方法
myMethod();
//y++为0只有再次调用的时候它才会自增到1 x+x=2
System.out.println( x + y++ + x );
//再次调用y,y变成1
System.out.println(y);
}
// 因为之前调用这个方法 所以必须先执行这个方法之后才能执行myMethod();下面的方法
private static void myMethod()
{
//此时的x为-1 在进行x++的时候 x++先计算再自增也就是说此时x++为负一
//x++为-1 在加上++x的时候 因为再次调用x所以++x中x为0
//++x 先自增在运算 所以为1
y=x++ + ++x;
//-1+1=0 所以y等于0
System.out.println(y);
//此时现在的x为1
System.out.println(x);
}
}
运行结果如下图:
新手有什么不对的地方请指出,轻喷谢谢大家