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

相关推荐
白眼黑刺猬4 分钟前
实时库存预警: 如何实现秒级更新且保证在高并发下不出现“超卖”显示错误?
大数据·面试·职场和发展
明灯伴古佛28 分钟前
面试:为什么synchronized是一个悲观锁
java·面试·职场和发展
不爱吃炸鸡柳2 小时前
C++ STL 核心:string 从入门到精通(面试+源码+OJ实战)
java·c++·面试
Cosolar3 小时前
超越基础 CRUD:LangChain-Chroma 在高并发场景下的架构设计与瓶颈突破
人工智能·后端·面试
程序员清风3 小时前
AI编程最佳实践:一个AI写代码,另一个AI查Bug!
java·后端·面试
星辰_mya4 小时前
【无标题】
数据库·后端·面试·架构师
明灯伴古佛4 小时前
面试:Java中乐观锁的实现原理是什么
java·面试·职场和发展
studyForMokey4 小时前
【Android面试】OkHttp & Retrofit 专题
android·okhttp·面试
白眼黑刺猬5 小时前
如何构建 Flink SQL 任务的血缘分析
大数据·面试·职场和发展·flink
苦瓜小生5 小时前
天玑学堂Agent面试总结(二)「持续更新」
面试·职场和发展