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

相关推荐
yaoh.wang1 小时前
力扣(LeetCode) 111: 二叉树的最小深度 - 解法思路
python·程序人生·算法·leetcode·面试·职场和发展·深度优先
沐雪架构师2 小时前
大模型Agent面试精选题(第六辑)-Agent工程实践
面试·职场和发展
Dolphin_海豚2 小时前
到底是选 merge 还是选 rebase
git·面试·程序员
不想秃头的程序员2 小时前
JS原型链详解
前端·面试
努力学算法的蒟蒻3 小时前
day42(12.23)——leetcode面试经典150
算法·leetcode·面试
不想秃头的程序员4 小时前
JS继承方式详解
前端·面试
摇滚侠4 小时前
面试实战 问题三十五 Spring bean 的自动装配 介绍一下熟悉的几种设计模式 Java 四种线程池是哪些
java·spring·面试
沐雪架构师5 小时前
大模型Agent面试精选题(第五辑)-Agent提示词工程
java·面试·职场和发展
踏浪无痕6 小时前
为什么 Spring Cloud Gateway 必须用 WebFlux?
后端·面试·架构
LYFlied7 小时前
前端工程化核心面试题与详解
前端·面试·工程化