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 条评论
登录 后参与评论

相关文章

来自专栏IMWeb前端团队

bash 的变量和参数

对一个编程脚本来说,最最基础的当然是变量。 对大多数开发者来说,变量也是最不值得的大说特说的。 但 bash 里的变量有一些特别的地方值得说说,谨防跌坑。 基本...

1750
来自专栏LEo的网络日志

python技巧分享(七)

3308
来自专栏个人随笔

论 异常处理机制中的return关键字

Java中,执行try-catch-finally语句需要注意: 第一:return语句并不是函数的最终出口,如果有finally语句,这在return之后还会...

2818
来自专栏公众号文章

Golang 入门系列(三)Go语言基础知识汇总

前面已经了 Go 环境的配置和初学Go时,容易遇到的坑,大家可以请查看前面的文章 https://www.cnblogs.com/zhangweizhong/c...

762
来自专栏WebDeveloper

跟我学习php字符串常用函数-下篇

1> mixed parse_url ( string $url [, int $component = -1 ] )

782
来自专栏zhangdd.com

nginx location匹配规则

~      #波浪线表示执行一个正则匹配,区分大小写 ~*    #表示执行一个正则匹配,不区分大小写 ^~    #^~表示普通字符匹配,如果该选项匹配...

964
来自专栏阮一峰的网络日志

尾调用优化

尾调用(Tail Call)是函数式编程的一个重要概念,本文介绍它的含义和用法。 ? 一、什么是尾调用? 尾调用的概念非常简单,一句话就能说清楚,就是指某个函数...

3195
来自专栏Python小屋

Python花式编程案例集锦(5)

问题描述: 输入三个序列,例如:[0.9,0.5,0.7],[0.4,0.6,0.3],[0.5,0.2,0.4],输出三个序列中各取一个相乘后最大的值,以及组...

2745
来自专栏郑科的专栏

PHP7 新特性简介(一)

PHP7是PHP编程语言全新的一个版本,在性能方面获得了极大的提升。官方的文档显示,PHP7可以达到PHP5.x版本两倍的性能。同时还提供了很多其他语言流行的语...

5560
来自专栏PHP在线

php

单例设计模式 1.控制一个类只能创建一个对象,设置构造函数为私有的。 2.设置静态方法调用类中方法返回实例化。 3.在类中设置静态属性存放实例化对象。 ? 命名...

3287

扫码关注云+社区