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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 光头强 中级黑马   /  2014-10-9 20:55  /  2720 人查看  /  35 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class Test3 {
    public static void main(String[] args) {
            int j = 0;
        for (int i = 0; i < 100; i++)
              j = j++;
              System.out.print(j);
               
    }
}

评分

参与人数 1技术分 +1 收起 理由
敏敏好学 + 1

查看全部评分

35 个回复

倒序浏览
  1.    j = j++;
复制代码
楼主,错误在这里,因为你之前定义过j=0了,那么右边的j++就等于1了,0=1是没有意义的,返回的是布尔值对吗?这是一个比较表达式,而不是赋值表达式
你可以写成
j=j+1;
它是一个赋值表达式
回复 使用道具 举报
hollywood2014 发表于 2014-10-9 21:04
楼主,错误在这里,因为你之前定义过j=0了,那么右边的j++就等于1了,0=1是没有意义的,返回的是布尔值对吗 ...

不是吧  这个不是赋值语句吗
回复 使用道具 举报
本帖最后由 踏云 于 2014-10-9 21:16 编辑

楼主的问题涉及++的运行机制。j++的过程,首先是将j的值传给temp,然后j=j+1;然后再返回temp给调用者。
所以过程是,
int temp=j;
j=j+1;
然后又把temp返回给j:
j=temp;

所以j的值永远都是初始值0;
如果只是要算次数的会直接 j++;就可以了
j++;约等于j=j+1;

评分

参与人数 2黑马币 +4 收起 理由
水竹 + 2
光头强 + 2

查看全部评分

回复 使用道具 举报 1 0
踏云 发表于 2014-10-9 21:12
楼主的问题涉及++的运行机制。j++的过程,首先是将j的值传给temp,然后j=j+

你好  可以加好友给我讲讲吗785328475
回复 使用道具 举报
光头强 发表于 2014-10-9 21:15
你好  可以加好友给我讲讲吗785328475

已近在上面讲的很清楚了
回复 使用道具 举报
光头强 发表于 2014-10-9 21:12
不是吧  这个不是赋值语句吗

抱歉,是我理解错误,是赋值语句
正确的解释是,i=i++;这个i是下次使用的时候才自加的,此时他还是为0,所以是0=0;i又变回0了,所以i始终为0,这才是正解(想起了c语言.....)
回复 使用道具 举报
踏云 发表于 2014-10-9 21:12
楼主的问题涉及++的运行机制。j++的过程,首先是将j的值传给temp,然后j=j+1;然后再返回temp给调用者。
所 ...

谢谢大神  求加好友
回复 使用道具 举报
踏云 发表于 2014-10-9 21:17
已近在上面讲的很清楚了

那么++j   前加加怎么理解
回复 使用道具 举报
++j的话就更简单了,j直接加1,然后再赋值给调用者,
j=++j;相当于

j=j+1;
j=j;

所以上面的会输出100
回复 使用道具 举报
hollywood2014 发表于 2014-10-9 21:04
楼主,错误在这里,因为你之前定义过j=0了,那么右边的j++就等于1了,0=1是没有意义的,返回的是布尔值对吗 ...

你这会胡扯{:3_50:}
回复 使用道具 举报
youtianlong123 来自手机 中级黑马 2014-10-10 01:28:09
12#
后++是后先附值,然后再自增
回复 使用道具 举报
虽然有for循环但是你并没有把j=j++和打印的一同括起来,再一个就是j++,++j,一个是先看结果在运算,一个是先运算再看结果,由于没循环到,所以打印的是0,新人一个希望能帮到你。
回复 使用道具 举报
j=j++是把j++的值赋给j,而每次for循环,j++的值都不变,始终是0,所以结果为0
(j++是每次j的值自增,而j++的值不变。++j是每次j的值自增,而++j的值也自增,j和++j同步变化)
回复 使用道具 举报
涨知识了
回复 使用道具 举报
可爱的光头强
回复 使用道具 举报
这样和你说吧,给你举个例子吧,看了就明白了。假设a=4,那么b=++a,这时是先把a的值加1,然后再把此时a得值复制给b,所以此时b的值为5,a的值也为5;还有一种就是b=a++,就是先把a的值复制给b,然后a的值再加1,所以此时b的值为4,a的值为5,。就是这些,希望你能明白,不明白再问我。
回复 使用道具 举报
J++是先赋值后自增哦
回复 使用道具 举报
hanliang 发表于 2014-10-10 11:51
这样和你说吧,给你举个例子吧,看了就明白了。假设a=4,那么b=++a,这时是先把a的值加1,然后再把此时a得值 ...

至于循环的话,你只要看懂刚刚那个,就是循环N次都是如此结果
回复 使用道具 举报
因为是先赋值给左边的j 然后右边的j++;然后返回的左边的j是没加之前的j就是你初始化的0 所以最后也是0
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马