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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘云龙 中级黑马   /  2013-3-7 22:15  /  901 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘云龙 于 2013-3-7 22:21 编辑
  1. class PlusPlus
  2. {
  3. public static void main(String[] args)
  4. {
  5.   int a = 2;
  6.   int b = (a++) + 3 * a;//打印11
  7.   //int b = 3 * a + (a++);
  8.   System.out.println(b);

  9.   int i = 3,k1,k2;
  10.   k1 = (i++)+(i++)+(i++);
  11.   i = 3;
  12.   k2 = (++i)+(++i)+(++i);
  13.   System.out.println(k1);//打印12
  14.   System.out.println(k2);//打印15
  15. }
  16. }
复制代码
分析上面的例子:
java中自增运算的过程,也体现了其面向对象的思想.在变量的自增运算中,变量有一个隐式的运算过程.对于前缀自增(++i),可以看做java直接将变量加1,然后再进行其他运算,这个相当简单.而对于后缀自增(i++),java是这样处理的:
首先,会拷贝变量的一个副本到一个临时变量区;
然后,拿这个临时变量区的值,也就是自增之前的值,去运算;
同时,原来变量区的值加1,并准备下次运算.
这里隐藏了3个小的步骤.
在上边的例子中,语句b = (a++) + 3 * a;的执行过程实际是这样的:
1.拷贝变量a的一个副本,到一个临时的变量区;
2.然后,拿这个临时变量区里的值,也就是2,去运算;此时,b = 2 + 3 * a;
3.同时,变量a在原来的变量区中的值加1;此时,a的值为3;
4.a自增之后,参见下面的运算,,b = 2 + 3 * 3;
5.最后,计算出b的值为11.
后边的例子,也是同样的思路.
这是我的一些总结,
大家可以验证一下,如有错误,也希望大家能够指出.

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马