JAVA i=i++的问题
来源:互联网 发布:大o符号 算法 编辑:程序博客网 时间:2024/04/29 09:41
问题引入
public class Inc{ public static void main(String args[]){ Inc inc = new Inc(); int i =0; inc.fermin(i); i = i++; System.out.println(i); } void fermin(int i){ i++; } }
分析
首先,i初始化为0;调用函数,这里是“值传递”,函数中的i只是本来i的一份拷贝,并没有改变i的值。
对于i=i++;
看一波反编译后的代码
public static void main(java.lang.String[]); Code: 0: iconst_0 //0放到栈顶 1: istore_1 //把栈顶的值保存到局部变量1,也就是i中 2: iload_1 //把i的值放到栈顶,也就是说此时栈顶的值是0 3: iinc 1, 1 //注意这个指令,把局部变量1,也就是i,增加1,这个指令不会导致栈的变化,也就是说局部变量1,即i此时为1了。 6: istore_1 //把栈顶的值(0)保存到局部变量1,也就是让i为0了,所以最后i为0 7: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream; 10: iload_1 11: invokevirtual #3; //Method java/io/PrintStream.println:(I)V 14: return
我们可以看到,i++之后的值并没有赋给i,所以i的值没有变化。
阅读全文
0 0
- i++ ,++i,i=i++的问题
- i++ ,++i,i=i++的问题
- JAVA i=i++的问题
- java中i=i++的问题
- java中i=i++的问题
- JAVA i=i++的问题
- JAVA i=i++的问题
- JAVA i=i++的问题
- Java i++原理及i=i++的问题说明
- Java i++原理及i=i++的问题说明
- Java i++原理及i=i++的问题说明
- Java i++原理及i=i++的问题说明
- Java i = i ++问题
- java i=i++ 问题
- java面试题inti=2;i+=i-=i*i的值以及关于i++;++i;i=i+1;i+=1 的效率问题
- 关于java中i++,++i和i++ + ++i的问题
- i=i++的问题
- i=i++的问题
- 欢迎使用CSDN-markdown编辑器
- Java关键字汇总
- META-INF
- Java中main方法传参的几种方式
- Android手机设置中的清除App数据选项的思考?
- JAVA i=i++的问题
- jdk工具--jstat
- prim求最小生成树板子
- Java中Synchronized的用法
- QTP无限试用30天的办法
- 背景为渐变色的主界面
- AngularJS结合layDate5.0.2.js的使用-指令
- Docker搭建Javaweb运行环境
- 3.ARM异常中断处理及编程