java里for循环的一个小问题

执着的兔子 2017-07-26 03:41:53
int temp=1;
for(int i=0;i<10;i++){

temp=temp++;
}
System.out.println(temp);
}
请问为什么temp始终都等于1,后面的++有什么作用。
...全文
807 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
baidu_38037471 2017-08-09
  • 打赏
  • 举报
回复
当然有呀,前只是初始化
老大佬王 2017-08-09
  • 打赏
  • 举报
回复
4楼正解。 流程是先“temp=temp”再“temp++”。由于temp++没有被新赋值所以在本循环结束时被舍弃,temp=1。 下一个循环开始的时候同上。
kedor 2017-07-30
  • 打赏
  • 举报
回复
你是temp++与++temp没搞明白。
aptx1048576 2017-07-30
  • 打赏
  • 举报
回复
temp = temp++执行的步骤: int a = temp; temp += 1; temp = a; 所以temp还是之前的temp
天涯若风 2017-07-29
  • 打赏
  • 举报
回复
你放在for循环里面,直接temp+i就好啦。 ++ 放左边为先自增,再进行算数运算,++在右边为先运算再赋值。简单点说,++在左,当前行就进行了+1,++在右边,在本行结束运算之后,再增1
qq_36585995 2017-07-29
  • 打赏
  • 举报
回复
笨,直接temp++;就行了呀
waxf523 2017-07-28
  • 打赏
  • 举报
回复
原因:++在后,先赋值,再自增。 就是说右边的temp现将值1赋给了左边的temp,不管循环几次左边的temp永远为1,故输出结果为1 反之,++在前,先自增,再赋值。故写成temp=++temp; 也可以再定义一个全局变量int a;a=temp++;
lys4088 2017-07-28
  • 打赏
  • 举报
回复
直接改成tepm++
自由自在_Yu 2017-07-28
  • 打赏
  • 举报
回复
引用 4 楼 w648425259 的回复:
temp = temp++; 是先赋值,再++,你执行这一步操作时,创建了一个新的“1”的temp副本赋给了temp,而原先的老的temp副本++后并没有使用被舍弃,故你使用的temp的值每次都是1。“++”位自增符,不需要使用temp=temp++,循环内直接改为temp++就达到目的了。希望有用!
执着的兔子 2017-07-28
  • 打赏
  • 举报
回复
不不不,我不是这个意思,我只想弄明白为什么,++会没作用。
戴小码 2017-07-27
  • 打赏
  • 举报
回复
楼主改成++temp试试??
睡觉了喂 2017-07-26
  • 打赏
  • 举报
回复
看一下java编译以后的样子就知道了 @Test public void test6() { byte temp = 1; for(int i = 0; i < 10; ++i) { int var3 = temp + 1; //自增的时候给了第二个无关变量 temp = temp; } System.out.println(temp); }
执着的兔子 2017-07-26
  • 打赏
  • 举报
回复
,感谢回答,我想问的就是这个。
w648425259 2017-07-26
  • 打赏
  • 举报
回复
temp = temp++; 是先赋值,再++,你执行这一步操作时,创建了一个新的“1”的temp副本赋给了temp,而原先的老的temp副本++后并没有使用被舍弃,故你使用的temp的值每次都是1。“++”位自增符,不需要使用temp=temp++,循环内直接改为temp++就达到目的了。希望有用!
执着的兔子 2017-07-26
  • 打赏
  • 举报
回复
额,我想问的是为什么temp始终等于1,它后面的++没有起作用吗
ProjectNo 2017-07-26
  • 打赏
  • 举报
回复
循环里面写temp++;
qq_34563067 2017-07-26
  • 打赏
  • 举报
回复
temp++ 先赋值后自增 ++temp先自增后赋值

62,625

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧