【面试题】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我们会发现,报错的原因是因为我们将int类型赋值给short类型,而没有进行强制类型转换。

3.解析

在这里插入图片描述
在这里插入图片描述
s += 1的底层会有一个强制类型转换,将右边的结果转换成s的类型。

在这里插入图片描述

在这里插入图片描述

作者:Listener-1379    
出处:Listener-1379博客
github地址:https://github.com/beyong2019

本博客中未标明转载的文章归作者Beyong有,欢迎转载,但未经作者同意必须保留此段声明,且在文章明显位置给出原文连接,否则保留追究法律责任的权利。

相关推荐

  1. JVM 面试——CMSG1区别

    2024-04-20 16:22:08       21 阅读
  2. K8s面试——基础篇1

    2024-04-20 16:22:08       26 阅读
  3. 面试httphttps区别

    2024-04-20 16:22:08       21 阅读
  4. 面试:指针引用区别

    2024-04-20 16:22:08       21 阅读
  5. Linux面试1

    2024-04-20 16:22:08       26 阅读
  6. Redis面试1

    2024-04-20 16:22:08       15 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-20 16:22:08       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-20 16:22:08       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-20 16:22:08       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-20 16:22:08       20 阅读

热门阅读

  1. Spring框架中的11种设计模式(设计模式之美)

    2024-04-20 16:22:08       14 阅读
  2. 【LeetCode热题100】【贪心算法】划分字母区间

    2024-04-20 16:22:08       10 阅读
  3. vue admin pro 角色不同显示不同页面

    2024-04-20 16:22:08       14 阅读
  4. 【LeetCode热题100】【图论】岛屿数量

    2024-04-20 16:22:08       10 阅读
  5. 2-内核开发-第一个内核Hello模块开发案例

    2024-04-20 16:22:08       12 阅读
  6. Avi Wigderson:理论计算科学的先驱者与图灵奖得主

    2024-04-20 16:22:08       14 阅读
  7. 五个关于CSS3的常见面试题及其答案

    2024-04-20 16:22:08       12 阅读
  8. Mac 安装comfigUI (M1)

    2024-04-20 16:22:08       13 阅读