黑马程序员技术交流社区

标题: 测试题 [打印本页]

作者: lvwangxiao    时间: 2016-3-17 20:44
标题: 测试题
  1. public class Test3 {
  2.          public static void main(String[] args) {
  3.               int i = 3;
  4.               for(int j = 0; j < 5;j++){
  5.                  i = i++;
  6.               }
  7.               System.out.println(i);
  8.         }
  9. }
复制代码


这个题的的结果竟然是3?
作者: cc19930915    时间: 2016-3-17 21:03
i = i++ 是先赋值再递增  i的值一直没变
作者: as9600    时间: 2016-3-17 21:23
i先把值取出然后自增i变成了4,最后将取出的值付给了i也就是3所以i的值一直没变
作者: youdang    时间: 2016-3-17 21:31
一直没变吧,老梗了
作者: monZhang    时间: 2016-3-17 21:40
好吧。。。。。。。。。。这个真是
作者: lovelife    时间: 2016-3-17 21:46
++ --  的学问挺大的  基础班阳哥笔记里  第二个好像就有关于这方面的讲解 i++  先赋值再递增
作者: zxydeh    时间: 2016-3-17 21:57
感觉自己又要从头看了~~~
作者: 陈文广    时间: 2016-3-17 21:59
这个可以将i = i++; 分解成三步来操作
1. 先计算表达i++ 的值.在本题中 既表达式 i++ 的值是3,
2.再讲变量i自增1 即为 i=4;
3.在将 i++ 表达式的结果 即第一步的值 3
,又赋值给了变量i 所有变量i,执行完i=i++; 后每次都是3





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2