关于Java中的自增、自减运算符j=j++;
这几天要准备找实习了,临阵磨枪,不快也光,然后开始疯狂做题突击,遇到了这么一题
问输出的结果是多少。我相信很多人和我一样第一反应应该是想到100。但是结果却是错误的,不敢相信,然后上机实践发现确实不对。这是为什么?结果又应该是多少呢?
原来这是因为Java编译器使用了中间缓存变量的机制。j=j++;可以转换为如下写法:
这是在Java程序员面试宝典中给出的答案,感觉很不理解,然后又上网开始查,发现http://www.bitscn.com/plus/view.php?aid=20350这个解释就很容易理解了。
像j=j++;这种赋值语句, Java编译器每次遇到自增、自减运算符的时候都会开辟一块新的内存空间来保存赋值之前j的值,就是前文介绍的缓存变量,然后再将这个换成变量的值赋给左边的变量。链接里面通过内存空间图的方式讲解的很清楚,这里就不重复了。
所以本题的正确结果应该就是0。
题目会做错从本质上来分析的话应该还是对自增、自减运算符没掌握好,究竟是先用原值进行计算再加1,还是先加1再进行运算是这类题目特别需要注意的陷阱。这题是先用j的原值进行计算,那就是j=0;之后应该还有一个自增语句,但是由于变量已经被覆盖了,貌似就可以忽略了。
如果我们将赋值语句改为j = ++j;那会怎么样呢?现在应该是这么个流程
如果是这样的话,输出应该就是100了。
所以再对自增、自减运算符的变量进行赋值时都需要特别注意。借用别人的一句话:“如果在程序中只输入i++就不会出现这个方面的问题,所以大家在以后的程序中如果使用到i=i++的时候要格外小心,一般只需要用i++就不会有问题了。”
import java.util.*;
public class Test{
public static void main(String[] args){
int j=0;
for (int i = 0; i < 100; i++){
j = j++;
}
System.out.println(j);
}
}
问输出的结果是多少。我相信很多人和我一样第一反应应该是想到100。但是结果却是错误的,不敢相信,然后上机实践发现确实不对。这是为什么?结果又应该是多少呢?
原来这是因为Java编译器使用了中间缓存变量的机制。j=j++;可以转换为如下写法:
temp = j;
j = j + 1;
j = temp;
这是在Java程序员面试宝典中给出的答案,感觉很不理解,然后又上网开始查,发现http://www.bitscn.com/plus/view.php?aid=20350这个解释就很容易理解了。
像j=j++;这种赋值语句, Java编译器每次遇到自增、自减运算符的时候都会开辟一块新的内存空间来保存赋值之前j的值,就是前文介绍的缓存变量,然后再将这个换成变量的值赋给左边的变量。链接里面通过内存空间图的方式讲解的很清楚,这里就不重复了。
所以本题的正确结果应该就是0。
题目会做错从本质上来分析的话应该还是对自增、自减运算符没掌握好,究竟是先用原值进行计算再加1,还是先加1再进行运算是这类题目特别需要注意的陷阱。这题是先用j的原值进行计算,那就是j=0;之后应该还有一个自增语句,但是由于变量已经被覆盖了,貌似就可以忽略了。
如果我们将赋值语句改为j = ++j;那会怎么样呢?现在应该是这么个流程
temp = j +1;
j = j + 1;
j = temp;
如果是这样的话,输出应该就是100了。
所以再对自增、自减运算符的变量进行赋值时都需要特别注意。借用别人的一句话:“如果在程序中只输入i++就不会出现这个方面的问题,所以大家在以后的程序中如果使用到i=i++的时候要格外小心,一般只需要用i++就不会有问题了。”
...全文
相关推荐
java中的自增(++)和自减(--)运算符.docx
例如:```javaint i = 0;int j = ++i; // 此时j的值为1,因为i先自增再赋值int k = i++; // 此时k的值为1,因为i先赋值再自增```#### 自减运算符(`
自增(++)和自减(-)运算符.docx
例如:```javaint i = 0;int j = i++; // i = 1, j = 0 (后缀式,先赋值后自增)int k = --i; // i = 0, k = 0 (前缀式,先自减后赋值
java中的自增(++)和自减(--)运算符 (2).pdf
让我们分析一下给出的例子:```java1. int i = 0;2. int j = i++;3. int k = --i;```在这个例子中,`j`将得到`i`的原始值0,因为`i++`是后缀形式,
自增(++)和自减(-)运算符.pdf
总结来说,自增和自减运算符是Java中处理数值变化的基本工具,而按位运算符则是处理二进制位级操作的关键。了解这些运算符的用法和规则对于编写高效的代码至关重要,尤其是在处理底层数据和算法实现时。
java中的自增(++)和自减(--)运算符.pdf
Java中的自增(++)和自减(--)运算符是编程中常见的操作,它们用于增加或减少变量的值。这两个运算符分为前缀形式和后缀形式,每种形式有不同的行为和效果。1.


非技术区
