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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

chinfun

初级黑马

  • 黑马币:0

  • 帖子:8

  • 精华:0

© chinfun 初级黑马   /  2013-10-26 20:48  /  1557 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

代码如下:
public class Demo01A {

        public static void main(String[] args) {
        
                int a = 5;
               
                System.out.println(a); //5
               
                a = a++;   //a = a; ?a = a + 1;
               
                System.out.println(a);  //5
                System.out.println(a);  //5
               
               
        }

}


为什么a的值不变呢?

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

8 个回复

正序浏览
a=a++;计算过程是先取a的值5作为a++表达式的值5,然后将a的值自加为6,而在赋值时是把a++的值5赋给a,所以a的值有6变为5,所以System.out.println(a);  输出值是5
回复 使用道具 举报
本帖最后由 qixing0918 于 2013-11-1 16:02 编辑

    public static void main(String[] args) {
        int a = 5;
System.out.println(a); //5
a = a++;   //a = a; ?a = a + 1;
System.out.println(a);  //5
a=(a=a++);
System.out.println(a);  //5
a=(a=a+1);
System.out.println(a);  //6  
}

这说明了什么 a=(a=a++);     与a=(a=a+1);  是不一样的
我得出的结论是 a=a++ 想赋值  就变成 5++  所以 a=a++没意义
a = ++a;  是 先a+1 变成a=6  


回复 使用道具 举报
王东 中级黑马 2013-10-30 21:28:21
7#
a++是先赋值再自加,++a是先自加,在赋值
回复 使用道具 举报
本帖最后由 MeryStyle 于 2013-10-27 14:11 编辑

你好,后++的意思是在 其完成赋值操作之后本身再加一,你将a本身加一后的值 赋给一个中间变量,然后再将其输出就是6了。你第三个输出的仍是a本身罢了,并不是a加一之后的值。代码如下:
public class test {

        public static void main(String[] args) {
                  int a = 5;

          System.out.println(a); //5

          a = a++;   //a = a; ?a = a + 1;

          System.out.println(a);  //5
          int temp=(a=a+1);
          System.out.println(temp);  //6  
        }
}


回复 使用道具 举报
a = a++;   //a = a; ?a = a + 1;


a=a++;
运算是从后至前运算的
先看a++;
再看a=a;

a++是先拿来用,再自增,这时a的值是 5 ,这时假设a++中的a就是变量temp=5
将temp的值赋值给了a,a=5,temp++;temp=6;
所以a还是5,这样永远a=5;

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报
这个就是前++和后++,前++,例如进行的+操作,对于后++,是先用后加,a=a++;这样System.out.println(a++);这个值肯定也是5的,因为这时候还没有进行加操作,先把原来的值也就是5赋给了a,才进行的加操作,后面输出的值5也就是你重新赋值的这个a了,如果你另写一变量,也就是 int temp=a++;然后再输出a的值这时候才会变成6,它把5赋给了temp之后才对自己加1操作

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报
a = a++;   //a = a; ?a = a + 1;
这是在一行上吗?
回复 使用道具 举报
int a = 4;
System.out.println(a++);
System.out.println(a);
你将这个代码运行一下你就明白啦
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马