public class Test16 {
static void fermin(int i){
i++;
}
public static void main(String args[]){
Test16 t=new Test16();
int i=0;
t.fermin(i);
i=i++;
System.out.println(i);
}
}
结果为什么不是2,而是0呢?
static void fermin(int i){
i++;
}
public static void main(String args[]){
Test16 t=new Test16();
int i=0;
t.fermin(i);
i=i++;
System.out.println(i);
}
}
结果为什么不是2,而是0呢?
就像你上面的 System.out.println(i);
程序会先打印i,再运算++
如果把上面的i++都改成++i
就会先运算++,再打印i了
结果就变成2了
所以
int i=0;
t.fermin(i); //此时i还是0,因为fermin的i++不影响main的i
i=i++;//这里要知道执行的先后顺序,i++是先取得i的值作为表达式的值,然后i本身+1,
//=是把右边的表达式值赋给左边
//所以右边i++的值就是先取i的值0作为表达式的值,然后i本身+1,此时i为1
//然后=把右边的表达式的值0赋给左边,所以此时i又变成了0
i++值等于0 赋值给左边 这样i=1的语句又被改啦 改成i=0; 相当于i又被重新赋值啦!!!
二、程序运行到i=i++这里,i仍然是0(如上一步所说)
这里可以理解为:
i = i;// i =0;
println(i);
i=1;//先打印,然后i再变成一
{
static int add(int i)
{
return ++i;
}
public static void main(String[] args)
{
int i = 0;
TestDemo testDemo = new TestDemo();
i = testDemo.add(i);
i = ++i;
System.out.println(i);
}
}