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

相关推荐
java1234_小锋7 小时前
Spring事件监听的核心机制是什么?
java·spring·面试
沐怡旸10 小时前
【穿越Effective C++】条款15:在资源管理类中提供对原始资源的访问——封装与兼容性的平衡艺术
c++·面试
玉宇夕落11 小时前
深入剖析 JavaScript 中 map() 与 parseInt 的“经典组合陷阱”
javascript·面试
沐怡旸11 小时前
【底层机制】Android对Linux线程调度的移动设备优化深度解析
android·面试
摸鱼仙人~11 小时前
针对编程面试和算法题的基础书籍
算法·面试·职场和发展
over69712 小时前
《JavaScript的"魔法"揭秘:为什么基本类型也能调用方法?》
前端·javascript·面试
weixin_4410036413 小时前
2025教资面试真题电子版|科目试讲+结构化真题解析|完整PDF
面试·职场和发展·pdf
布列瑟农的星空14 小时前
后台类项目如何挖掘前端技术亮点
前端·面试
F_Director16 小时前
简说Vue3 computed原理
前端·vue.js·面试
绝无仅有16 小时前
大厂面试相关文章:深入技术面试中的核心知识点
后端·面试·架构