黑马程序员技术交流社区

标题: 有关++a及a++的问题 [打印本页]

作者: 李金伦    时间: 2015-7-2 23:07
标题: 有关++a及a++的问题
class Test
{
   public static void main(String[] args)
      {
          int a = 1;
          a = a++;
        System.out.println(a);
      }
}

为什么打印的结果是1,不是2,求解答
作者: luorenyu    时间: 2015-7-3 00:07
因为a先将本身值1赋予了a然后在进行了自加1,所以输出的是1
作者: 虾米吃螃蟹    时间: 2015-7-3 07:36
a=b++是先将b的值赋给a,再自加;a=++b,是b先自加然后再讲值赋给a
作者: wgy    时间: 2015-7-3 07:42
     a = a++;
  他的底层是先将a参与赋值运算,赋值完成后成++,所以打印的就是1,而不是2。如果单独使用的话就是2。
作者: WElife    时间: 2015-7-3 07:55
++a和a++是不一样
作者: qxc1281    时间: 2015-7-3 08:16
++a先自增
a++先用后自增
作者: ZhangHeng    时间: 2015-7-3 09:26
举个例子,希望你能了解的更清楚:
a=2,b=++a ;    答案a=3,b=3(自增前)
a=2,b=a++ ;    答案a=3,b=2(自增后)
作者: 々白点潜心ザ    时间: 2015-7-3 14:09
a++就已经相当于a=a+1了,感觉你写成a=a++,有点多余
作者: 思考。。。    时间: 2015-7-3 14:19
对于a++,a本身是先给自己赋值再自加1,而++a是a先给自己加1再运算。
作者: xujixing    时间: 2015-7-3 15:10
在java中,a++ 和 ++a的相同点都是给a+1, 不同点是a++是先参加程序的运行再+1,而++a则是先+1再参加程序的运行。
  1. public static void main(String[] args) {
  2.                 int a=2;   int b =a++;
  3.                
  4.                 int c=2;    int d=++c;
  5.                
  6.                 int e=6;
  7.                 int f=e++;
  8.                 int g=++e;
  9.                 System.out.println("a ="+a);
  10.                 System.out.println("b="+b);
  11.                 System.out.println("c="+c);
  12.                 System.out.println("d="+d);
  13.                
  14.                
  15.                 System.out.println("f="+f);
  16.                 System.out.println("g="+f);
  17.                
  18.         }
  19. }
复制代码

  1. a =3
  2. b=2
  3. c=3
  4. d=3
  5. f=6
  6. g=6
复制代码

作者: wuwenwen3779    时间: 2015-7-3 21:49
因为你把a++赋值给了a啊,所以a接收到的是a喽
作者: mls123456    时间: 2015-7-3 22:07
(1)a++呢,就是先赋值,再加加,int a = 1, 先赋值为1,再加加为2,
作者: mls123456    时间: 2015-7-3 22:09
mls123456 发表于 2015-7-3 22:07
(1)a++呢,就是先赋值,再加加,int a = 1, 先赋值为1,再加加为2,

理解a++,与++a 就好了,加油:)
作者: 黑与白    时间: 2015-7-3 23:37
在a = a++中,根据符号的优先级,=会在最后进行计算,所以,首先会把a++中的a赋值给左边的a,然后才会计算a++,因此,打印出的结果是1.
作者: 李金伦    时间: 2015-7-3 23:56
谢谢各位!
作者: 李金伦    时间: 2015-7-3 23:58
xujixing 发表于 2015-7-3 15:10
在java中,a++ 和 ++a的相同点都是给a+1, 不同点是a++是先参加程序的运行再+1,而++a则是先+1再参加程序的 ...

恩现在理解了非常感谢!
作者: 李金伦    时间: 2015-7-3 23:59
黑与白 发表于 2015-7-3 23:37
在a = a++中,根据符号的优先级,=会在最后进行计算,所以,首先会把a++中的a赋值给左边的a,然后才会计算 ...

非常感谢!易理解




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