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

相关推荐
liang_jy19 小时前
文件管理(一)—— 初识文件管理
面试·操作系统
liang_jy19 小时前
文件管理(二)—— 文件结构
面试·操作系统
HeiSenBerg1 天前
Android Lifecycle 原理完整剖析:从监听、事件分发到状态驱动
面试
CoderYanger1 天前
A.每日一题:1979. 找出数组的最大公约数
java·程序人生·算法·leetcode·面试·职场和发展·学习方法
HeiSenBerg1 天前
LeakCanary 原理完整剖析:从初始化到堆分析
面试
沉默王二1 天前
腾讯面试官:“你说你做了一个终端Agent,那说说 LLM 和 Agent的区别,ReAct、MCP、Tool、Memory、Skills?”我信誓旦旦开始背了
面试·agent·腾讯
爱学习的执念1 天前
软件测试面试常问,主要考察你对接口测试相关知识的掌握程度?
面试·职场和发展
HeiSenBerg1 天前
Glide 原理分析
面试
清泓y1 天前
UE 物理系统知识分享
面试·ue5·游戏程序
KaifuZeng1 天前
电源面试问题汇总一
单片机·嵌入式硬件·面试·电路