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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 不愿一人 中级黑马   /  2013-12-23 11:28  /  1663 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public class Test {
  2.     public static void main(String[] args) {
  3.         int i = 1;
  4.         i = i++;

  5.         System.out.println(i);
  6.     }
  7. }
复制代码
输出结果为什么是1?我觉得应该是2啊

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 赋值后再加是无效的赋值。

查看全部评分

8 个回复

倒序浏览
一个小知识点:这个i++相当于是先把你上面的初始值先赋给等号左面那个i,然后它自身再++,所以是1,如果输出时2的话你应该使用++i。总而言之i++是先赋值再++,++i是先++再赋值。

评分

参与人数 1黑马币 +9 收起 理由
FFF + 9 问题太简单,不能显示出你的水平。.

查看全部评分

回复 使用道具 举报
这里是i++与++i的区别,对于i=i++和i=++i:i++是先赋值,再加1,输出1;而++i是先加1,再赋值,输出2。

评分

参与人数 1黑马币 +3 收起 理由
FFF + 3 问题太简单,不能显示出你的水平。.

查看全部评分

回复 使用道具 举报
你说的那个知识点我知道.不过当i=i++,这个运算结束后,i的值应该是2啊,就是,
i=i++,先执行赋值操作即i=1,然后再之后再对i进行自增操作,这是i应该为2啊,我说的是这个疑问
回复 使用道具 举报
java编译机制特点。

遍过程:Java在执行  变量=i++;
在执行变量赋值语句(不是常量赋值,而是例如:i = a;即赋值号后面有变量)之前,会先把i的值找个地方保存起来,然后直接在i变量的空间内对值+1,然后再把刚才保存起来的那个值赋给变量.

评分

参与人数 1黑马币 +3 收起 理由
FFF + 3 问题太简单,不能显示出你的水平。..

查看全部评分

回复 使用道具 举报
java编译机制特点。

遍译过程:Java在执行  变量=i++;
在执行变量赋值语句(不是常量赋值,而是例如:i = a;即赋值号后面有变量)之前,会先把i的值找个地方保存起来,然后直接在i变量的空间内对值+1,然后再把刚才保存起来的那个值赋给变量,所以还是1.
回复 使用道具 举报
夏德宇 发表于 2013-12-23 12:10
java编译机制特点。

遍译过程:Java在执行  变量=i++;

恩,懂了,谢谢
回复 使用道具 举报
计算的的计算方式是从左到右的
回复 使用道具 举报
了解了!{:soso__3110130392203091378_3:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马