操作符++ 求教 若i = i++;改为i++;就是3。因为i++是先赋值,再累加,所以先把2付给了i 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 谢谢指点。对呀,你说的这点我理解,因为这就是为什么有 After:中 j 与 i 结果的原因。我不理解的是在 i = i++; 中,右边的 i 先给左边的 i 付值 2,然后右边的 i 累加 1。为什么这个右边的累加 1 的 i 值对下面一行中的 i 的值没有影响?都是变量 i 呀。 请问楼上的大哥当执行完i=i++;语句后,也就是将2付值给i后,i不是正好自动加1吗?输出的结果是3才对啊? Before改成++i就是3了++i是 先+后显示,显示+以后的i++是 先显示后+,显示+以前的 可以做个假设,i赋值后,i在内存中的位置改变了,++操作只是针对原来的地址的值进行加1操作,而没有影响到赋值后的i的值。不知道我这样的假设对不对,请高手指教! 这种情况用javap来分析最好了,用法是javap -c classname代码如下i=2;i=++i;反汇编如下0 iconst_21 istore_12 iinc 1 1//先加15 iload_1//然后放到寄存器中6 istore_1//从寄存器中取出并赋值改变代码如下i=2;i=i++;反汇编如下: 0 iconst_2 1 istore_1 2 iload_1//先将值放到寄存器 3 iinc 1 1//值加1,但此时寄存器上值不便 6 istore_1//用寄存器上值赋值 新手jdbc问题 关于map的问题 log4j的疑惑:如果我在两个java源代码文件里面使用Logger,该怎么用呢?网上的例子都是针对一个源代码文件的。 JAVA数据传递问题!! Jbuider7的哪个目录底下java有文档? 下载<java程序设计百事通>作者士张洪斌.在线等 请各位大虾帮忙 写JAVA程序时,如果一行语句太长了,我想换行继续写,应该怎么办呢??? 一个进IBM的机会 关于JAVA反编译中,ActionListener的问题 怎么学好JAVA? 各位大虾,到哪里可以找到关于java类库的资料?
为什么这个右边的累加 1 的 i 值对下面一行中的 i 的值没有影响?都是变量 i 呀。
当执行完i=i++;语句后,也就是将2付值给i后,i不是正好自动加1吗?
输出的结果是3才对啊?
++i是 先+后显示,显示+以后的
i++是 先显示后+,显示+以前的
不知道我这样的假设对不对,请高手指教!
代码如下
i=2;
i=++i;
反汇编如下
0 iconst_2
1 istore_1
2 iinc 1 1//先加1
5 iload_1//然后放到寄存器中
6 istore_1//从寄存器中取出并赋值
改变代码如下
i=2;
i=i++;
反汇编如下:
0 iconst_2
1 istore_1
2 iload_1//先将值放到寄存器
3 iinc 1 1//值加1,但此时寄存器上值不便
6 istore_1//用寄存器上值赋值