Java中的隐式转换和强制转换底层是怎么做的?
目录
1. 回顾数值型基本数据类型共有哪些?
2. 什么时候进行隐式类型转换?
3. 数据类型的隐式转换规则
4. 特殊隐式转换规则需牢记
5. 隐式转换小练习
5.1 byte 与 byte 如何转?
5.2 int,long,double 的转换
5.3 byte,short,long 的转换
6. 强制转换如何转换?
7. 强制转换有哪些问题?
1. 回顾数值型基本数据类型共有哪些?
如下图所示,6种数值型和字符型都属于是基本数据类型的范畴,他们的关系图如下所示。

对于八种基本数据类型而言,我们通常会在6种数值型的的数据之间做算术运算,它们之前的取值范围大小如图所示

2. 什么时候进行隐式类型转换?
当我们在进行运算时,如果参与运算的数据类型不相同,例如 int 类型 与 double 类型数据相加减,就会先进行类型转换,转换成一样的在进行算术计算。
3. 数据类型的隐式转换规则
当取值范围小的和取值范围大的进行运算时,小的会先提升为大的,然后再进行计算。
4. 特殊隐式转换规则需牢记
刚才我说到了,当取值范围小的和取值范围大的数据进行运算时,小的会先转化成大的,然后再进行计算;但是 byte,short,char 这三种数据类型它们之间在进行算数运算时,都会先统一转换成 int 类型,然后再进行计算,而不是转换成它们三个之中数据类型最大的,这一点需要格外注意。
5. 隐式转换小练习
5.1 byte 与 byte 如何转?
如下所示代码,问下方运算之后得到的数据类型是什么样的?
byte b1 = 10;
byte b2 = 20;
数据类型 result = b1 + b2;
显而易见,通过我上面第四点的说明,这一点不难得出,byte 与 byte 做运算,会先统一转换为 int 类型,所以最终得到的数据类型是 int 。
5.2 int,long,double 的转换
如下所示,定义三个分别为 int,long,double类型的数据做运算,得出的结果是什么类型呢?
int a = 10;long b = 20L;double c = 30;数据类型 result = a + b + c;
首先我们要知道一点,运算时从左往右计算的,所以我们要一步一步的看。
先看 a + b,int 类型 与 long 类型相加,int 会转换为 long 类型,所以 a + b之后得出的数据类型是 long;
然后 long 再与 double 做相加,long 类型会转换为取值范围更大的 double 类型,所以最后得出的数据类型是 double。
5.3 byte,short,long 的转换
如下所示,定义了三个分别为 byte,short,long 类型的数据做运算,得出的结果是什么类型?
byte a = 10;short b = 20;long c = 30L;数据类型 result = a + b + c;
还是和刚才一样,byte 与 short 先做运算,会统一转换为 int 类型,int 类型再与 long 类型做运算,int 会先转换为 long 类型,所以最后得出的数据类型应该是 long 类型。
6. 强制转换如何转换?
在 Java 种,原则是是不允许把一个取值范围大的数据赋值给取值范围小的数据。如果一定要这么做,就需要进行强制转换。
强制转换的格式也很简单,如下图所示,我们只需要在被墙砖的数据前面括号内写入希望转换成的数据类型即可。

7. 强制转换有哪些问题?
强制转换有可能会导致数据发生错误。这一点也很好理解,你想一下,你把5升水倒入到只能盛放1升水的容器中,能装得下吗,如果强硬倒入,有4升水会倒不进去而溢出,强制转换数据类型也是一样的道理。
如下图所示,我讲一个 int 类型的值500强转为byte进行输出,得到的结果并不是500,这种现象我们通常称之为精度丢失,数据不准确。
之所以会出现这种情况,是因为500已经超出了byte 的最大值,在强转的时候会出现数据溢出,出现精度不准确。

如果我们把上面的 int = 500 改为 byte 范围内的任意值,我这里改为 50,再去做强转,就不会出现数据不准确,如下所示

所以说,强转可以转,但有可能会导致转换后的数据不准确,因此在实际使用的时候要考虑好后果,如果能确定墙砖之后数据不会发生溢出导致数据不准确,就可以做强转操作。
相关文章:
Java中的隐式转换和强制转换底层是怎么做的?
目录 1. 回顾数值型基本数据类型共有哪些? 2. 什么时候进行隐式类型转换? 3. 数据类型的隐式转换规则 4. 特殊隐式转换规则需牢记 5. 隐式转换小练习 5.1 byte 与 byte 如何转? 5.2 int,long,double 的转换 5.…...
Hbuilder本地调试微信H5项目(一)
摘要 通过内网穿透,访问本地Hbuilder创建的Vue项目 前置准备 下载并安装【HBuilder】,本文用的是HBuilder3.8.12版本,下载地址 下载并安装【微信开发者工具】,本文用的是1.06版本,下载地址 下载并安装【natapp】&a…...
OPC DCOM快速配置
目录 1 老系统配置 1.1 移除Windows 安全 1.2 建立相互能识别的用户账号 1.3 配置系统宽泛的DCOM设置 1.4 配置Server的特殊DCOM设置 1.5 恢复Windows安全 1 老系统配置 远程OPC访问必须在服务器和客户端两端配置DCOM。本文讲述如何正确配置 DCOM 的步骤并保证安全。 新…...
软件设计模式
1.UML 1.1类图表示法 uml类图中,类使用包含类名、属性、方法 属性或方法前的加好和减号表示了这个方法的可见性,可见性的符号有三种: 表示public -表示private #表示protected 1.2 类与类之间关系 关联关系 单向关联 双向关系 自关联 聚合关…...
Git常见场景命令总结
1、查看远程仓库标签/分支 git ls-remote --tags origin git ls-remote --heads origin2、删除远程仓库标签/分支 git push origin --delete refs/tags/my_tag3、删除本地标签/分支 git branch -d <branch_name>4、修改代码但未add回滚 git checkout -- <file1>…...
面向对象的分析与设计(精品课程)第一章作业
面向对象的分析与设计(精品课程)第一章作业 一. 单选题(共2题,18分)二. 多选题(共3题,27分)三. 填空题(共5题,45分)四. 简答题(共1题&…...
要使用API接口获取淘宝电商平台的数据,您需要遵循以下步骤:
了解API文档和规范:首先,您需要了解淘宝电商平台的API文档和规范,以确定可用的接口和参数。您可以在淘宝开放平台的官方文档中找到这些信息。注册并获取API密钥:在使用API之前,您需要在淘宝开放平台注册并获取API密钥。…...
vue中动态style(如何动态修改伪元素样式)
vue中动态style(如何动态修改伪元素样式)_vue怎么在行内给伪元素加样式_爱上星星的鲸鱼的博客-CSDN博客...
碳当量及相关指数
声明 本文是学习GB-T 713.1-2023 承压设备用钢板和钢带 第1部分:一般要求. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本文件规定了承压设备用钢板和钢带的牌号表示方法、订货内容、尺寸、外形、重量、技术要求、检验 规则、…...
MySQL数据库入门到精通
介绍 终于将黑马程序员 MySQL数据库入门到精通,从mysql安装到mysql高级、mysql优化全囊括这个视频看完了,发现自己之前掌握的数据库知识只能算是个入门,现在将这个视频的笔记整理一下,方便复习。准备按基础篇,进阶篇&…...
【TA】OP-TEE demo学习
前言:工作原因接触Apple软件需要搭建TA环境,涉及到OP-TEE,学习一下 OP-TEE(Open Portable Trusted Execution Environment)是一个开放源代码的可信执行环境(TEE)软件框架。它提供了安全的执行环…...
什么是实时操作系统(UCOS简介)
uC/OS-III官网:Home Page - Weston Embedded Solutions 一、裸机与RTOS介绍 下面我将从不同方面阐述裸机与试试操作系统的区别,从而进一步介绍裸机和实时操作系统 定义: 裸机:裸机指的是没有任何操作系统或软件层的硬件系统。在…...
软考-操作系统
/4操作系统的作用 进程 进程的概念 进程是程序的一次执行过程,没有程序就没有进程 进程可有多个线程,线程可共享资源 进程的两个基本属性: 可拥有资源的独立单位可独立调度和分配资源的基本单位 线程可共享: 内存地址空间代码…...
【EasyExcel】excel表格的导入和导出
【EasyExcel】excel表格的导入和导出 【一】EasyExcel简介【二】EasyExcel使用【1】EasyExcel相关依赖【2】写Excel(1)最简单的写(方式一)(2)最简单的写(方式二)(3)排除模型中的属性字段(4&…...
Unity shader内置standard代码解析
最近有相关需求制作,所以这里编写一个文档,方便后续的流程查看。 下载源码 由于unity内置的shader是无法查看源码的,你需要去官网下载对应版本内置源码查看 在引擎下载那里,会有一个Built in Shaders,下载 打开以后…...
Redis 有序集合操作实战(全)
目录 ZADD 加入有序集 ZCARD 取成员数量 ZCOUNT 计算区间成员数量 ZINCRBY 运算 ZRANGE 取区间成员(升序) ZRANGEBYSCORE 按分值排序取成员 ZRANK 取成员排名 ZREM 移除成员 ZREMRANGEBYRANK 按位置区间批量移除 ZREMRANGEBYSCORE 按分值区间移除 ZREVRANGE 取区间成…...
化工DCS/SIS/MIS系统时钟同步(NTP服务器)建设
化工DCS/SIS/MIS系统时钟同步(NTP服务器)建设 化工DCS/SIS/MIS系统时钟同步(NTP服务器)建设 目前计算机网络中各主机和服务器等网络设备的时间基本处于无序的状态。 随着计算机网络应用的不断涌现,计算机的时间同步问…...
计算机网络工程师多选题系列——操作系统
得多选者得天下啊同志们! 摘录按照章节顺序,但事实上各章节习题有交叉。 1 操作系统 1.1 操作系统概论 操作系统的主要功能:进程管理、存储管理、文件管理、设备管理和用户接口。 操作系统的主要功能——设备管理:为用户程序提…...
matlab读写json文件
Background 通常,在matlab中使用mat文件进行数据存储。MAT文件是MATLAB中用来存储数据的二进制文件格式。MAT文件可以包含各种数据类型,包括数字、矩阵、向量、结构体、字符和函数等。但是,当和其他语言有交互时,mat文件会不太方便…...
数据治理-数据仓库环境
数据仓库环境包括一系列组织起来以满足企业需求的架构组件,从源系统流动到数据暂存区,数据可以在这里被清晰,当数据集成并存储在数据仓库或操作数据存储中时,可以对其进行补充丰富。在数据仓库中,可以通过数据集市或数…...
终极指南:如何快速找回Chrome浏览器保存的所有密码
终极指南:如何快速找回Chrome浏览器保存的所有密码 【免费下载链接】chromepass Get all passwords stored by Chrome on WINDOWS. 项目地址: https://gitcode.com/gh_mirrors/chr/chromepass 你是否曾经因为忘记Chrome浏览器中保存的重要密码而束手无策&…...
STM32F103C8T6 HAL库驱动HC-SR04:用输入捕获双通道模式,精准测距不翻车
STM32F103C8T6 HAL库双通道捕获HC-SR04:高精度测距的工程实践 在智能小车避障、工业液位检测等嵌入式应用中,超声波测距模块的稳定性直接决定系统可靠性。传统单通道捕获方案常因计数器溢出、中断响应延迟等问题导致测量误差,而双通道输入捕获…...
OpenClaw安全加固:Qwen3.5-9B操作权限的4层防护
OpenClaw安全加固:Qwen3.5-9B操作权限的4层防护 1. 为什么需要安全加固? 上周我在用OpenClaw自动处理一份包含客户联系方式的Excel表格时,突然意识到一个问题:如果AI助手误操作删除了关键文件怎么办?更可怕的是&…...
Qwen3-TTS在心理治疗中的应用:情感化语音陪伴系统
Qwen3-TTS在心理治疗中的应用:情感化语音陪伴系统 1. 引言 想象一下这样的场景:一位正在经历焦虑情绪的用户,深夜无法入睡,需要即时的情感支持。传统的心理咨询需要预约等待,而此刻他们最需要的是一个能够理解、回应…...
人体关键点检测实战:如何用OKS和AP评估模型性能(附Python代码示例)
人体关键点检测实战:OKS与AP指标深度解析与Python实现 在计算机视觉领域,人体姿态估计一直是热门研究方向,而准确评估模型性能则是项目落地的关键环节。不同于常规的目标检测任务,人体关键点检测需要更精细的评估体系——这正是OK…...
法律文书助手:OpenClaw+Qwen3-32B的合同条款审查与风险提示
法律文书助手:OpenClawQwen3-32B的合同条款审查与风险提示 1. 为什么需要本地化的法律文书助手? 去年处理一份股权投资协议时,我经历了传统法律AI工具的典型痛点:上传合同到第三方平台后,法务团队突然发现协议中涉及…...
3步解除音乐枷锁:QMCDecode全场景音频解密指南
3步解除音乐枷锁:QMCDecode全场景音频解密指南 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录,默认转换结果…...
Nacos集群启动时,那个神秘的cluster.conf文件到底是怎么被找到和监控的?
Nacos集群启动时cluster.conf文件的寻址与监控机制深度解析 从一次集群配置失效事件说起 上周深夜,我们的分布式系统监控平台突然发出警报——Nacos集群中的三个节点相继失联。紧急排查时发现,明明已经更新了cluster.conf文件新增了两个节点,…...
gte-base-zh场景应用:电商搜索与客服问答的语义匹配实战
gte-base-zh场景应用:电商搜索与客服问答的语义匹配实战 1. 电商场景中的语义匹配挑战 1.1 搜索不精准的痛点分析 在电商平台上,用户搜索"苹果手机"却看到水果苹果的图片,或者输入"轻薄笔记本"却返回游戏本࿰…...
STM32HAL库项目实战:我把W5500和MQTTClient库‘缝’起来,实现了阿里云OTA升级前传
STM32HAL库与W5500深度整合:从MQTT云连接到OTA升级的工程实践 在嵌入式设备智能化浪潮中,远程固件升级(OTA)已成为工业设备的标配功能。本文将揭示如何基于STM32HAL库和W5500以太网芯片构建可靠的云连接通道,为后续OTA升级打下坚实基础。不同…...
