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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李金伦 中级黑马   /  2015-7-2 23:04  /  1552 人查看  /  17 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Test
{
    public static void main(String[] args)
    {
         int a = 1;
           a = a++;
        System.out.println(a);
    }
}
为什么打印的结果是1,而不是2?求解答

17 个回复

正序浏览
娜妞子~ 来自手机 中级黑马 2015-7-7 12:53:07
18#
李金伦 发表于 2015-7-2 23:04
class Test
{
    public static void main(String[] args)

++在后是先用后执行,就是先把a的值赋给前面的变量,它自己再加一,输出的结果当然是一了,他变成二后并没有使用它
回复 使用道具 举报
linjian931219 来自手机 中级黑马 2015-7-7 12:19:23
17#
这就是a++和++a的区别,a++是先赋值后加1,赋值给a相当于产生了一个副本,然后你打印的也是他的副本,而不是他自加1后的值!解释的不好,希望对你有帮助
回复 使用道具 举报
答非所问  人家问答案为什么是1而不是2
什么a=a+1啊  什么先赋值再加1
拿先赋值再加1来说 int a=1;a=a;a++;
新手肯定会先认为a=a;a++ 那答案不就是2了么。。。。。。。。。。。
回复 使用道具 举报
a=a++ 是先a=a然后再执行a++
回复 使用道具 举报
因为a++是先赋值再+1啊
回复 使用道具 举报
a++是先赋值,然后再加1
回复 使用道具 举报
_Rain 来自手机 中级黑马 2015-7-7 01:45:35
12#
这里面包含了一个默认的2和1值的互换:要用到一个临时变量temp,
temp=a;
a=a+1;
a=temp;
回复 使用道具 举报
a++是先赋值再加加,++a是先加加再赋值
回复 使用道具 举报
a++是先实现功能在加  而++a是先加在实现功能
回复 使用道具 举报
a=a++;相当于
a=a;
a++;
是将a的值先赋值给a,然后在自己增加
回复 使用道具 举报
先赋值在加1
回复 使用道具 举报
a++先赋值后自增 ++a相反
回复 使用道具 举报
1,先赋值,再自加
回复 使用道具 举报
两种自增a++和++a都表示a=a+1 但其与赋值运算的优先级的关系不同 运算优先级a++小于赋值 ++a大于赋值 也就是说 a=a++的话 是先赋值 再自增 a=++a的话 是先自增 再赋值
回复 使用道具 举报 1 0
好像记得赋值跟等号左右也有关系吧。
回复 使用道具 举报
杨基米德 来自手机 中级黑马 2015-7-3 07:51:24
藤椅
后++是先执行操作,再+1
回复 使用道具 举报
a++返回一个1,1又赋给了a。 弄清楚a++和++a的区别
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马