A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 周四川 中级黑马   /  2012-4-26 14:18  /  2387 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public class test1 {
  2. public static void main(String[] args) {
  3. int j=0;

  4. int a=0;

  5. int b=a++ + j++ + ++j;

  6. System.out.println(j);

  7. System.out.println(a);

  8. System.out.println(b);

  9. }
  10. }
复制代码
运行的结果是:
2
1
2
求解释程序的运算过程。。主要是那个b为啥等于2?

9 个回复

倒序浏览
运算顺序从左到右
a++ 先参与运算(0)再加1(如果a++右边有用到a,那么a的值就是在1的基础上操作)
j++同a,0参与运算,j变成1
++j先自增再运算 j从1的基础上加1 等于2
所以 b是2 a是1 j是2
回复 使用道具 举报
  1. //                int b=a++ + ++j + j++ ;
  2.                 int b=0;
  3.                 {
  4.                         j+=1;
  5.                         b=a+j+j;
  6.                         a+=1;
  7.                         j+=1;
  8.                 }
复制代码
同学,我把它替换了,这下应该清楚了吧
回复 使用道具 举报
int b=a++ + j++ + ++j;
这句代码真正的算术运算是0+0+2
j++运算完后j为1,然后到++j时,运算前再加1,就为2了啊
回复 使用道具 举报
倪杭乘 发表于 2012-4-26 14:27
运算顺序从左到右
a++ 先参与运算(0)再加1(如果a++右边有用到a,那么a的值就是在1的基础上操作)
j++同a,0 ...

好吧,我是从右往左计算的。。。谢谢给纠正了。。
回复 使用道具 举报
public class test1 {

public static void main(String[] args) {

int j=0;



int a=0;



int b=a++ + j++ + ++j;//a先和j相加等于0,然后自增得a=1,j=1;再和++j运算,j先自增得2,  0+2=2赋给b



System.out.println(j);



System.out.println(a);



System.out.println(b);



}

}
//等号右边的加法运算从左到右一项一项的加,结果就出来了j=2,a=1,b=2
回复 使用道具 举报
李斌 中级黑马 2012-4-26 15:39:00
7#
受教了
回复 使用道具 举报
翟友伟 黑马帝 2012-4-26 15:53:55
8#
int b=a++ + j++ + ++j;

起始值j=0 ,
j++   后 j=1 .
++j   没运算前 j=1+1=2;
b= 0+0+2
   ++x 先     x++后   很容易理解的
回复 使用道具 举报
了解自增的顺序,a++先赋值在自增,++ j先自增在运算所以
int b=a++ + j++ + ++j;
运算过程是a,j相加为0,后自增。和自增后的J相加结果为2
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马