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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zybnqf520 中级黑马   /  2016-3-3 10:35  /  2343 人查看  /  34 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public static void main(String[] args) {
      int i = 3;
      for(int j = 0; j < 5;j++){
         i = i++;
      }
      System.out.println(i);
}

34 个回复

正序浏览
278008379 来自手机 中级黑马 2016-3-12 13:16:20
34#
哪有你们说的那么复杂,都不用看循环里的i是几,只看一点,输出语句在for循环外,循环内的值无论是多少,出了循环就释放了,输出的是第一次声明的值
回复 使用道具 举报
i=i++;是将i的值加1然后将之前的值传给i,所以i的值没有变化
回复 使用道具 举报
暴风城管 来自手机 中级黑马 2016-3-12 07:32:10
32#
xanx14710 发表于 2016-3-9 22:36
i=i  的执行顺序是i先自增1,然后再将自增之前的i赋值给自增之后的i,所以等于没变 ...

对,顶一个
回复 使用道具 举报
是i = i++这个运算的先后顺便不同。首先对于i++:本来的含义就是i自增后再赋值在自己也就是i=i+1。但是到了i = i++,在这个语句中,则是先运算i++得自增的i,然后全局的i赋值到自增的i里面。
回复 使用道具 举报
天天就是这个题,没意思
i =i++; i++先变成4,后++,把操作之前的值赋给i,i还是3,不断地赋值为3
完了
回复 使用道具 举报
i++是没有变得,但i是变了的
回复 使用道具 举报
lixianglei 发表于 2016-3-3 11:35
public static void main(String[] args) {
      int i = 3;                                         // ...

j = 0  这就是在赋值啊,只不过赋值是0
a:执行初始化语句
        * b:执行判断条件语句,看其返回值是true还是false
                * 如果是true,就继续执行
                * 如果是false,就结束循环
        * c:执行循环体语句;
        * d:执行循环后的操作表达式
        * e:回到B继续。

很显然 j = 0 是小于5的
执行一次循环体,然后j++  j变成1 然后还是小于5
再执行循环体 然后 j++   j变成2 还是小于5
再执行循环体 然后 j++   j变成3 还是小于5
再执行循环体 然后 j++   j变成5 还是小于5
再执行循环体 然后 j++   j变成5 不小于5
循环结束

至于 为什么i还是等于1
因为又边的 i 先赋值给左边的i  并没有自身+1 所以i还是3
回复 使用道具 举报
楼主 看看这段文字能看懂吗?

算术运算符++和--
      * a:单独使用:
                * 放在操作数的前面和后面效果一样。(这种用法是我们比较常见的)
        * b:参与运算使用:
                * 放在操作数的前面,先自增或者自减,然后再参与运算。
                * 放在操作数的后面,先参与运算,再自增或者自减。
回复 使用道具 举报
jeremylee 发表于 2016-3-11 22:56
其实最简单的理解就是说for循环完后 里面的i的值就消失 所以i一直为3

{:2_33:}你确定 你学会了?
虽然说是for 里面的值会被释放,但是也要看 值在哪里定义的

你说里面的值会消失,那你把楼主的i++ 变成 ++i 看看i会不会有变化

所以 不是for释放不释放的问题,问题是 ++在变量哪边的问题
回复 使用道具 举报
我真的没看懂i=i++是什么意思。。
回复 使用道具 举报
越看越迷茫了······
回复 使用道具 举报
用i=i++;头一次见这么写的 ,感觉好奇怪哦
回复 使用道具 举报
其实最简单的理解就是说for循环完后 里面的i的值就消失 所以i一直为3
回复 使用道具 举报
i=i++在java里面无论运行多少次,i=i。
回复 使用道具 举报
如果你对于++运算比较理解的话  class Test {
        public static void main(String[] args) {
                int i = 3;
                i = i++;        //1 i结果为3
                i = i++;        //2  i结果为3
                i = i++;        //3  i结果为3
                i = i++;        //4  i结果为3
                i = i++;        //5  i结果为3
               
                System.out.println(i);   //最后结果还是为3
        }
}   
这样可能有利于你的理解

点评

66666  发表于 2016-3-12 14:02
回复 使用道具 举报
看到上面的答案,表示还是很迷糊。求大神详解
回复 使用道具 举报
因为i的值一直没有变化过!!!可以用debug运行查看
回复 使用道具 举报
应该是7才对吧
回复 使用道具 举报
为什么是3呢
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马