文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

一个关于 i++ 和 ++i 的面试题打趴了所有人

2023-09-26 12:44

关注

前言

都说大城市现在不好找工作,可小城市却也不好招人。

我们公司招了挺久都没招到,主管感到有些心累。

我提了点建议,是不是面试问的太深了,在这种小城市,能干活就行。

他说自己问的面试题都很浅显,如果答不上来说明基础太弱了。

我问了下面试题,然后我沉默了。

起因

起因就是我嘴欠问了下这个面试题:

i++ 和 ++i 有什么区别,谁的效率更高?并解释出原因。

没错,我竟然答不上来,贼尴尬,心想早知不问了。

主管有些意外,又问了几个别的同事,没一个答上来的。

他脸黑了,周四研发部例会的时候,干脆所有人问了一遍。

好吧,都是工作至少5年以上的Java程序员,没一个人答上来,五花八门的回答,全错。

然后大家就一致决定(主管决定),每周展开一次学习会,要补基础,保持团队学习热情,提升团队技术能力。

本来是为了招人,结果自己人被团灭。

正文

我挤出一个晚上不带娃的时间到处找资料,研究了下这个面试题,在此分享给大家,希望能有帮助。

1、i++ 和 ++i 有什么区别

首先,先看两个小例子:

image

image

到这里先停一下,大家自己思考半分钟,觉得打印结果是什么。

然后,我们来看看结果。

image

image

没错,第一个打印是 6 和 5,第二个打印是 6 和 6。

这就是他们的区别,解释下原因:

i++:这是后缀递增运算符,先将当前值赋给变量,然后再递增。

++i:这是前缀递增运算符,先递增变量的值,然后再赋给变量。

2、i++ 和 ++i 谁的效率高

这个问题我其实蒙对了,我说是一样高的,但是主管问我原因,我没答上来。

后来告诉我了答案,就是它们被编译器和JVM优化后的字节码是相同的,所以效率一样高。

3、字节码指令

然后我就去找了字节码指令的用法,将上面的案例以及两者效率是否一样进行了验证。

指令用法很简单,定位到class文件所在目录,使用 javap -verbose 命令执行即可。

1)、从字节码看区别

我们将前面那个案例,通过字节码指令输出到txt文件中。

image

image

在文档编辑器中找到main方法,对这两个字节码内容进行比对,发现确实有如下不同。

可以看到红框部分,刚好佐证了上面解释的区别,i++会先使用当前值,然后再递增;而++i会在递增之后立即使用新值,通过字节码看起来还是挺明显的。

image

2)、从字节码看谁的效率高

我们依然写个for循环的小例子来做验证。

image

image

将这两个类编译后的class通过字节码指令输出到txt中

image

image

接下来我们就可以比对下结果了

image

可以看到,main方法开始,从上到下的字节码是完全一样的,没任何不同。

所以,i++ 和 ++i 的效率本质是一样高的。

总结

其实,我相信很多人都见过这个面试题,甚至在笔试题当中也遇到过。

但工作了这么多年,即使是我,也只是剩下一点印象,也没有真正去研究一下这个简单的问题。

希望这篇文章,给大家有所帮助,也能启发大家如何去研究此类问题。

好了,今天的小知识你学会了吗?


如果喜欢,请点赞+关注↓↓↓,持续分享干货哦!

来源地址:https://blog.csdn.net/xiangyangsanren/article/details/133212481

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯