【面试题】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有,欢迎转载,但未经作者同意必须保留此段声明,且在文章明显位置给出原文连接,否则保留追究法律责任的权利。

相关推荐
G等你下课1 小时前
从点击到执行:如何优雅地控制高频事件触发频率
前端·javascript·面试
Jackson_Mseven1 小时前
面试官:说说 startTransition 和 useDeferredValue?我:我用它一行代码救了首页!
前端·javascript·面试
XiaolongTu1 小时前
Kotlin Flow详述:从一个“卡顿”问题到线程切换的本质
android·面试
国家不保护废物1 小时前
节流(throttle):给频繁操作加上冷却时间!🔥
前端·javascript·面试
国家不保护废物1 小时前
闭包实战大全:从防抖节流到私有变量,解锁JS高级技巧 🚀
前端·javascript·面试
阿劲1 小时前
从业务卡顿到数据库连接池耗尽:Spring Boot项目HikariCP超时问题实战排查
java·后端·面试
红衣信1 小时前
React 中 useContext 的使用与状态共享详解
前端·react.js·面试
汪子熙2 小时前
什么是 ArkTS
后端·面试
3Katrina2 小时前
前端面试之防抖节流(二)
前端·javascript·面试
Z字小熊饼干爱吃保安2 小时前
面试技术问题总结一
数据库·面试·职场和发展