Java自增自减运算符神坑笔试题

问:下面程序运行的结果是什么?

int count = 0;
for(int i = 0;i < 100;i++)
{
    count = count++;
}
System.out.println("count = "+count);

    答:count = 0

首先count++是一个有返回值的表达式,返回值是count自加前面的值,java对自加处理的流程是先把count的值(不是引用),拷贝到一个临时变量区,然后对count变量加1,接着返回临时变量区的值。

所以上面代码中第一次循环执行的步骤是JVM把count的值(0)拷贝到临时变量区,然后count值加1,这时count的值是1,接着返回临时变量区的值(值还是0),最后赋值给count,此时count值被重置成0。所以上面代码语句,count = count++可以按照如下代码来理解:

int autoAdd(int count)
{
    int temp = count;
    count = coutn + 1;
    return temp;
}

所以第一次循环后count的值还是0,其他99次的循环也是一样,最终导致count的值始终没变,任然保持最初的状态,如果想要打印100,则把语句count = count++改为count++即可。不过这个问题在不同的语言环境中是不一样的,在c++中count = count++与count++是等效的,但在Java中是不等效的。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ShaoYL

深刻理解----修饰变量----关键字

32911
来自专栏好好学java的技术栈

Java基础提升篇:equals()方法和“==”运算符

703
来自专栏吾爱乐享

java之学习基本类型包装类的概述及Integer类的概述和构造方法

1314
来自专栏C语言及其他语言

【编程经验】变量的存储类型

在 C 语言中,变量是对程序中数据所占内存空间的一种抽象定义,定义变量时,用户定义变量的名、 变量的类型,这些都是变量的操作属性。不仅可以通过变量名访问该变量,...

863
来自专栏好好学java的技术栈

java基础提升篇:Static关键字

1012
来自专栏前端真相

关于valueOf() 和 toString(),我们需要知道的事儿

1537
来自专栏用户2442861的专栏

JS面向对象的程序设计

http://www.cnblogs.com/gaojun/p/3386552.html

431
来自专栏深度学习自然语言处理

Python学习——collections系列

一 ,计数器(counter) Counter是对字典类型的补充,用于追踪值得出现次数 ps:具备字典的所有功能 + 自己的功能 例: >>> from ...

35514
来自专栏IT可乐

Java中的增强 for 循环 foreach

  foreach 是 Java 中的一种语法糖,几乎每一种语言都有一些这样的语法糖来方便程序员进行开发,编译期间以特定的字节码或特定的方式来对这些语法进行处理...

1779
来自专栏JetpropelledSnake

Python入门之函数的形式参数与实参/参数的具体使用方法

 本篇目录:     一、 函数参数之形式参数与实参     二、 函数参数的具体使用 #1、位置参数:按照从左到右的顺序定义的参数 位置形参:...

4096

扫码关注云+社区