加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

= Java中的运算符

发布时间:2020-12-14 16:34:08 所属栏目:Java 来源:网络整理
导读:考虑这个代码: long val = 0;for(int i = 0; i 2; val++) val =+ ++i;System.out.println(val); 为什么val = 3到底是什么 我会这样计算: val i0 0 i 2 = true;0 0 ++i;0 1 val =+ 1;1 1 (end of for loop) val++;2 1 i 2 = true;2 1 ++i;2 2 val =+ 2;4 2
考虑这个代码:
long val = 0;
for(int i = 0; i < 2; val++)
    val =+ ++i;

System.out.println(val);

为什么val = 3到底是什么

我会这样计算:

val     i
0       0   i < 2 = true;
0       0   ++i;
0       1   val =+ 1;
1       1   (end of for loop) val++;
2       1   i < 2 = true;
2       1   ++i;
2       2   val =+ 2;
4       2   (end of for loop) val++;
5       2   i < 2 = false;
Output: 5

但是它是3.我不明白为什么增加val = i没有完成第二次当我= 1并获得预增加到i = 2.

解决方法

我们首先关注不寻常的行:
val =+ ++i;

这里的运算符是=(赋值),(一元加)和(预增量).没有=运算符. Java将其解释为两个运算符:=和.加上适当的空格更清楚:

val = + ++i;

现在分析一下处理:

第一次迭代:val和i是0.我被递增到1,这是i的结果.一元不做任何事情,1被分配给val.然后迭代语句val发生,现在val为2.我仍然为1,因此满足for循环条件并发生第二次迭代.

第二次迭代:我再次递增到2.一元不做任何事情,val被分配2.迭代语句val再次出现,现在是3.但是现在是2,不小于2,所以循环终止,并打印val-3-.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读