【面试题】s += 1 和 s = s + 1的区别

文章目录

1.问题

以下两个程序真的完全等同吗?

short s = 0;

s += 1;
short s = 0;

s = s + 1;

2.发现过程

初看s += 1 和 s = s + 1好像是等价的,没有什么区别。很长一段时间内我也是这么觉得,因为当时学习c语言的时候教科书上将s += 1转换成s = s + 1帮助我们去理解,所以我将这个迁移到了java语言当中。但是直到遇到了一个有意思的题目,于是亲自在idea中去测试了一下,结果发现s += 1 没有报错,而 s = s + 1报错了。

通过idea我们会发现,报错的原因是因为我们将short类型赋值给int类型,而没有进行强制类型转换。

3.解析


s += 1的底层会有一个强制类型转换,将右边的结果转换成s的类型。

作者:Listener-1379

出处:Listener-1379博客

github地址:https://github.com/beyong2019

本博客中未标明转载的文章归作者Beyong有,欢迎转载,但未经作者同意必须保留此段声明,且在文章明显位置给出原文连接,否则保留追究法律责任的权利。

相关推荐
belhomme8 分钟前
(面试题)Netty 线程模型
java·面试·netty
boooooooom5 小时前
别再用错 ref/reactive!90%程序员踩过的响应式坑,一文根治
javascript·vue.js·面试
张元清5 小时前
Astro 6.0:被 Cloudflare 收购两个月后,这个"静态框架"要重新定义全栈了
前端·javascript·面试
青青家的小灰灰5 小时前
深入理解 async/await:现代异步编程的终极解决方案
前端·javascript·面试
Baihai_IDP7 小时前
为什么 AI 巨头们放弃私有壁垒,争相拥抱 Agent Skills
人工智能·面试·llm
Moment7 小时前
Agent 开发本质上就是高级点的 CRUD
前端·后端·面试
哈里谢顿17 小时前
0305乒乓xx agent运维开发岗面试记录
面试
哈里谢顿18 小时前
0309面试二总结
面试
哈里谢顿18 小时前
0309面试一记录
面试
哈里谢顿18 小时前
0310面试二记录
面试