当前位置: 首页 > news >正文

【面试题】s += 1 和 s = s + 1的区别

文章目录

  • 1.问题
  • 2.发现过程
  • 3.解析

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

http://www.lryc.cn/news/339083.html

相关文章:

  • ARM的学习
  • Restful API接口规范(以Django为例)
  • AI助力,程序员压力倍增?
  • LoRA微调
  • 45.基于SpringBoot + Vue实现的前后端分离-驾校预约学习系统(项目 + 论文)
  • 系统思考—时间滞延
  • SSM项目转Springboot项目
  • VUE3.0对比VUE2.0
  • 车内AR互动娱乐解决方案,打造沉浸式智能座舱体验
  • OR36 链表的回文结构
  • 【译】微调与人工引导: 语言模型调整中的 SFT 和 RLHF
  • kylin java.io.IOException: error=13, Permission denied
  • 前端面试01总结
  • 算法--目录
  • ArcGIS Pro 3D建模简明教程
  • 24届数字IC设计/验证秋招总结贴——先看这个
  • 带洞平面三角分割结果的逆向算法
  • MGRE-OSPF接口网络类型实验
  • ChatGPT科研利器详解:写作论文轻松如玩游戏
  • vue3从精通到入门23:定义全局变量
  • 反爬虫之代理IP封禁-协采云IP池
  • ELK-Kibana 部署
  • Backtrader 量化回测实践(7)——在jupyter中执行bt的samples
  • npm vs. pnpm vs. Yarn: 三者之间的区别与比较
  • Learning Feature Sparse Principal Subspace 论文阅读
  • Hibernate入门经典与注解式开发大全
  • 蓝桥杯之注意事项
  • ES6 全详解 let 、 const 、解构赋值、剩余运算符、函数默认参数、扩展运算符、箭头函数、新增方法,promise、Set、class等等
  • c++ - 类的默认成员函数
  • Java哈希查找(含面试大厂题和源码)