java中的j++/j--
2015-08-30 21:15
281 查看
int j=0;
for (int i = 0; i < 10; i++) {
j=j++;
}
System.out.println(j); int j=0;
for (int i = 0; i < 10; i++) {
j=i;
}
System.out.println(j);
输出结果为:0
受c语言的影响,以为j的值先是赋值,然后自增1.结果反而不对。后来才了解到
原来是在编译器上出了问题,java的编译器在遇到i++和i- -的时候会重新为变量
运算分配一块内存空间,以存放原始的值,而在完成了赋值运算之后,将这块内存
释放掉,如果是++j/--j,则直接在j的原地址上进行,不用另开一块内存。
int j=0;
for (int i = 0; i < 10; i++) {
j=j++;
}
System.out.println(j); int j=0;
for (int i = 0; i < 10; i++) {
j=i;
}
System.out.println(j);
输出结果为:0
受c语言的影响,以为j的值先是赋值,然后自增1.结果反而不对。后来才了解到
原来是在编译器上出了问题,java的编译器在遇到i++和i- -的时候会重新为变量
运算分配一块内存空间,以存放原始的值,而在完成了赋值运算之后,将这块内存
释放掉,如果是++j/--j,则直接在j的原地址上进行,不用另开一块内存。
相关文章推荐
- JAVA.C#堆和栈的区别
- 简单介绍java Enumeration
- [笔记][Java7并发编程实战手册]4.5-4.6 运行多个任务并处理第一个结果/所有结果ThreadPoolExecutor
- 二叉树的java实现
- JAVA初体验
- java框架集合
- 复习“JDK+JVM”的知识点
- Java Spring MVC (一) 配置maven环境
- Java程序性能优化之代理模式
- Java基础知识强化10:Java中的中间缓存变量机制
- 【J2SE】配置JDK环境变量
- JAVA练级之路(二)--- JAVA入门
- Java中垃圾回收和静态类型
- Java垃圾回收机制与引用类型
- java 数据类型转换的陷阱
- java实现快速排序两种方法
- 给初学者之一:浅谈java及应用
- java
- 迈进Java:HelloWorld
- Java线程:概念与原理