黑马程序员技术交流社区

标题: 新手求教! [打印本页]

作者: 小时晚er    时间: 2013-7-25 11:37
标题: 新手求教!
本帖最后由 小时晚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)
}

作者: 曹奎    时间: 2013-7-25 11:44
一样的  有图有真相

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

QQ图片20130725115125.jpg

作者: yinjiek    时间: 2013-7-25 12:13
i++,和i=i+1;i++ 为打印后或进入第二次循环在递增的;

i=i+1;  为运算完之后直接赋值了所以打印出来为1;
作者: chilong_333    时间: 2013-7-25 15:59
i++是赋值在运算,就是说当i= i++时,就是i=i,但此时的I已经被赋值了,只有在下次调用时才会输入所赋值的数。
然而++i是先运算在赋值,与上诉正好相反。这样能理解吗?
作者: 逆袭的风    时间: 2013-7-26 11:07
这个的输出是一样的,i的输出值都为2
至于你说的i++和i=i+1的输出不一样,当时你是不是写的i=i++;,如果是这样的话,问题就好理解了
因为i=i++;中因为是后++,是先进行的赋值然后进行的自加运算.而i=i+1是先加1然后赋值,所以结果不一样.
希望对你有所帮助.
作者: 手心里的温柔    时间: 2013-7-26 12:14
先看代码:
  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
作者: 李健09    时间: 2013-7-26 12:50
i++,是i进行运算,而后二次循环i递增此时i=i+1,第三次循环i(i+1)在递增此时i=i+1+1......;
i=i+1是把i+1的和赋给了i
作者: longlangcx    时间: 2013-7-26 14:08
i++ 和 i = i + 1的区别只在于表达式的值不同,而++i和 i = i + 1似乎是完全相同的。这是对于int来说。

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

比如:
byte b = 1;
b++; //ok
b = b + 1; //!error: 需要byte,找到int。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2