= 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-. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |