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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小时晚er 中级黑马   /  2013-7-25 11:37  /  1491 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 小时晚er 于 2013-7-26 15:53 编辑

请问各位大神们,i++,和i=i+1,的区别,在帮别人回答问题的时候我才发现这个问题,为什么i++,和i=i+1输出的值不一样,如int i=0,    i++,   System.out.println(i)的值和int i=0,    i=i+1,   System.out.println(i)的值不一样?
public static void main(String args[]){
        int a=10;
         int i=0;
    while(a<30){
         a+=10;
        // i++;
       i=i+1
}
System.out.println(i)
}

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1

查看全部评分

7 个回复

倒序浏览
一样的  有图有真相

QQ图片20130725115125.jpg (29.14 KB, 下载次数: 0)

QQ图片20130725115125.jpg
回复 使用道具 举报
i++,和i=i+1;i++ 为打印后或进入第二次循环在递增的;

i=i+1;  为运算完之后直接赋值了所以打印出来为1;
回复 使用道具 举报
i++是赋值在运算,就是说当i= i++时,就是i=i,但此时的I已经被赋值了,只有在下次调用时才会输入所赋值的数。
然而++i是先运算在赋值,与上诉正好相反。这样能理解吗?
回复 使用道具 举报
这个的输出是一样的,i的输出值都为2
至于你说的i++和i=i+1的输出不一样,当时你是不是写的i=i++;,如果是这样的话,问题就好理解了
因为i=i++;中因为是后++,是先进行的赋值然后进行的自加运算.而i=i+1是先加1然后赋值,所以结果不一样.
希望对你有所帮助.
回复 使用道具 举报
先看代码:
  1. class Test
  2. {
  3.         public static void main(String args[])
  4.         {
  5.                 System.out.println(demo_1());
  6.                 System.out.println(demo_2());
  7.         }
  8.         public static int demo_1()
  9.         {
  10.                 int x = 1;
  11.                 return x++;
  12.         }
  13.         public static int demo_2()
  14.         {
  15.                 int x = 1;
  16.                 return x=x+1;
  17.         }
  18. }
复制代码
demo_1()返回值为1;
demo_2()返回值为2;
分析: i++是先使用i的值然后i加1; i=i+1是把i+1赋给了i
回复 使用道具 举报
i++,是i进行运算,而后二次循环i递增此时i=i+1,第三次循环i(i+1)在递增此时i=i+1+1......;
i=i+1是把i+1的和赋给了i
回复 使用道具 举报
i++ 和 i = i + 1的区别只在于表达式的值不同,而++i和 i = i + 1似乎是完全相同的。这是对于int来说。

而对于比int小的类型来说有点不同,因为涉及自动类型提升。

比如:
byte b = 1;
b++; //ok
b = b + 1; //!error: 需要byte,找到int。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马