后++ 的问题 [面试题] int a = 9; a = a++; System.out.println("a = " + a);输出 a 等于9。为什么不得10呢?a = a++; 不应看成 先 a = a; 再 a = a+1; 吗?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://blog.csdn.net/ZangXT/archive/2008/11/05/3229281.aspx 首先执行a++,这时a=10,但表达式a++的值为9,然后又把9赋给了a,所以最后a=9 a = a++; 顺序应该是:取出a的值为9,然后a++(这时a=10);最后a = 9;所以a=9; a=a++;这句的执行是这样的:a=a,然后a++,是"a++"这个表达式等于10. 二楼的答案很详细啊~java是先把i的值取出来放到栈顶,我们可以认为是引入了第三个变量int k=i;然后i++,这时候i为1了,然后让j=k;也就是0.结论,i的++运算是在对j这个变量的赋值之前完成的。我的理解是,由于++的优先级别比赋值操作=的优先级别高,而sun公司开发jdk时为了给出规范所以会造成现在的结果至于9楼的问题用反编译软件啊!~ 当然 我县根据实际结果 总结一下结论以后看见后加加 如g=h++; 或 h=h++;同一当作g=h; 及 h=h;处理。而前加加好说 按书上讲的 拆成先h++;再g=h; 或 h=h;-----------另外问下 2楼怎么反汇编的? 反编译.class 只得到.java 答:在JAVA中, 若a是int类型 ,则: a++ 相当于: int t; t=a; a=a+1; 此时表达式本身(a++)的值都用t去赋值.因此: a = a++; 相当于: int t=a;//t=9 a=a+1;// a=10; a=t;// 用t去赋值,故 a=9再如:int a = 9; a=(a++)+(++a);问:a=?答:第一个(a++) 相当于: int t1; t1=a;//t1=9 a=a+1;//a=10; 此时t1值就是(a++)表达式的值 第二个(++a) 相当于: int t2; a=a+1;//a=11 t2=a;//t2=11最后的式子:a=(a++)+(++a); 相当于: a=t1+t2; 即: a=9+11;故: a的值是: 20 在JAVA中,int a = 9; a=(a++)+(++a); //不知道以后是否会见到这道题作面试题问:a=? 答:第一个(a++)相当于: int t1; //t1值当作是(a++)表达式的值 t1=a; //t1=9 a=a+1; //a=10 先给这个“表达式”赋值,再加一 而且还在内存中留着临时变量a 直到本条语句结束return t1;第二个(++a)相当于: int t2; //t2值当作是(++a)表达式的值 a=a+1; //a=11 先加一,再给这个“表达式”赋值,而且还在内存中留着临时变量a~t2=a; //t2=11 return t2;最后的式子:a=(a++)+(++a); 相当于: a=t1+t2; 即: a=9+11; 故: a的值是: 20 ---------------------------------------这种记忆java中的(a++)(++a)比较方便。a = 9; a=true?a++:(a++)+(++a); //a=a++;System.out.println(a); //输出 a得9 请问JAVA如何根据图片画不规则的窗体?用JDK5.0 java编程问题 webService初级问题, 取字符中的一部分有那些方法啊???超级菜鸟问! 有没有四舍五入的函数?或者求有效数字,精度的函数啊?如何实现 关于触摸屏电脑系统的软件开发的几点疑问 问题 关于server连接多个client 什么是静态初始化? 问个有关TestArea问题大家近来帮忙看看! 关于一个排序的问题 一个FocusListener的问题
顺序应该是:取出a的值为9,然后a++(这时a=10);最后a = 9;
所以a=9;
java是先把i的值取出来放到栈顶,我们可以认为是引入了第三个变量int k=i;然后i++,这时候i为1了,然后让j=k;也就是0.结论,i的++运算是在对j这个变量的赋值之前完成的。
我的理解是,由于++的优先级别比赋值操作=的优先级别高,而sun公司开发jdk时为了给出规范
所以会造成现在的结果
至于9楼的问题
用反编译软件啊!~
以后看见后加加 如
g=h++; 或 h=h++;
同一当作
g=h; 及 h=h;
处理。而前加加好说 按书上讲的 拆成
先h++;
再g=h; 或 h=h;
-----------
另外问下 2楼怎么反汇编的?
答:在JAVA中, 若a是int类型 ,则: a++ 相当于:
int t;
t=a;
a=a+1;
此时表达式本身(a++)的值都用t去赋值.
因此: a = a++; 相当于:
int t=a;//t=9
a=a+1;// a=10;
a=t;// 用t去赋值,故 a=9再如:
int a = 9;
a=(a++)+(++a);
问:a=?
答:第一个(a++) 相当于:
int t1;
t1=a;//t1=9
a=a+1;//a=10;
此时t1值就是(a++)表达式的值
第二个(++a) 相当于:
int t2;
a=a+1;//a=11
t2=a;//t2=11
最后的式子:a=(a++)+(++a); 相当于: a=t1+t2; 即: a=9+11;
故: a的值是: 20
int a = 9;
a=(a++)+(++a); //不知道以后是否会见到这道题作面试题
问:a=? 答:第一个(a++)相当于:
int t1; //t1值当作是(a++)表达式的值
t1=a; //t1=9
a=a+1; //a=10 先给这个“表达式”赋值,再加一 而且还在内存中留着临时变量a 直到本条语句结束
return t1;
第二个(++a)相当于:
int t2; //t2值当作是(++a)表达式的值
a=a+1; //a=11 先加一,再给这个“表达式”赋值,而且还在内存中留着临时变量a~
t2=a; //t2=11
return t2;
最后的式子:a=(a++)+(++a); 相当于: a=t1+t2; 即: a=9+11; 故: a的值是: 20 ---------------------------------------
这种记忆java中的(a++)(++a)比较方便。a = 9;
a=true?a++:(a++)+(++a); //a=a++;
System.out.println(a); //输出 a得9