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

相关推荐
uhakadotcom2 小时前
Scrapy-Redis 里面提供哪些即开即用的功能能力模块
前端·面试·github
KaifuZeng2 小时前
通信与接口协议面试十七、SFP光模块
单片机·嵌入式硬件·面试·通信与接口协议
weedsfly3 小时前
单例模式在前端中的正确打开方式
前端·javascript·面试
帅次3 小时前
Android 高级工程师面试:网络与数据层 近1年高频追问 18 题
android·网络·okhttp·面试·retrofit·gilde
tkevinjd14 小时前
力扣437路径总和III
算法·leetcode·面试·职场和发展
奔跑的蜗牛ing17 小时前
CentOS Nginx 安装与静态文件服务器配置指南
前端·面试·架构
KaifuZeng20 小时前
通信与接口协议面试五、RS422
嵌入式硬件·面试·通信与接口
SamDeepThinking1 天前
组合还是继承?我在项目里主要看这两个判断
java·后端·面试
wear工程师1 天前
setState 到底是不是异步的?这题从 React 16 问到 18,标准答案早就变了
react.js·面试
SamDeepThinking1 天前
为什么很多人学了Java,还是没真正理解类和对象?
java·后端·面试