日期:2014-05-20  浏览次数:20808 次

变量的自增问题!
public class Demo3_5 {

public static void main(String[] args) {
// TODO Auto-generated method stub
int a = 9;
int b = -a;
byte bb = 9;
int ib = +bb;
int x = 4, y = 8;
int z;
int i = 0;
int j= i++;
int k=++j;

z = (x++)*(y--);

System.out.println("a ="+a);
System.out.println("b ="+b);
System.out.println("bb ="+bb);
System.out.println("ib ="+ib);
System.out.println("i ="+i);
System.out.println("j ="+j);
System.out.println("k ="+k);
System.out.println("x ="+x);
System.out.println("y ="+y);
System.out.println("z ="+z);

}

}

运行的结果:
a =9
b =-9
bb =9
ib =9
i =1
j =1
k =1
x =5
y =7
z =32
我困惑的地方是:既然j=1啦,k=++j;那么k应该是2才对,为什么k也是等于1?
------解决方案--------------------
百度一下,++i和i++的区别。
------解决方案--------------------

 int j= i++; //这里的i是先赋值,后++ ,因此赋值给“j”的事“0”哦,
 int k=++j; //这里先++后赋值,因此这里“k”是“1” 望楼主切记哦……


------解决方案--------------------
public class Demo3_5
{    
public static void main(String[] args)
{        // TODO Auto-generated method stub       
int a = 9;       
int b = -a;        
byte bb = 9;        
int ib = +bb;        
int x = 4, y = 8;        
int z;        
int i = 0;       
int j= i++;             //j=0,i=1        
int k=++j;              //k=1,j=1;
z = (x++)*(y--);        //z=4*8=32;  x=5,y=7;           
System.out.println("a ="+a);      
System.out.println("b ="+b);       
System.out.println("bb ="+bb);      
System.out.println("ib ="+ib);      
System.out.println("i ="+i);       
System.out.println("j ="+j);    
System.out.println("k ="+k);      
System.out.println("x ="+x);       
System.out.println("y ="+y);     
System.out.println("z ="+z);    

}
}

楼主不要用c或c++的思想来看!我记得c++在不同的编译器中答案是不一样的!
------解决方案--------------------
引用:
Quote: 引用:

百度一下,++i和i++的区别。
按照我用c的思维来说,
12行:int j= i++; //j的值为1
13行:int k=++j; //++j等于2,再赋值给k,所以k=2;

C也是一样的,int k=++j; //先赋值给k,然后再j=j+1,所以k=1,
------解决方案--------------------
先加后赋值
在正确的基础之上思考问题可以回避复杂未知因素而用简单地严密地方法解决即可
------解决方案--------------------
++在前表示先++再计算,++在后表示先计算后++
------解决方案--------------------

????????int?i?=?0;
????????int?j=?i++;//j=0,i=1
????????int?k=++j;//k=1,j=1

最后打印出来的当然是k=1,j=1了
------解决方案--------------------
比如说:i ++是先进行操作再自增, ++ i是先自增再进行操作