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

Java 的强制类型转换

Java 的强制类型转换(Type Casting),是指将一种数据类型转换为另一种数据类型的过程。它分为:


🌱 一、两种类型转换方式

类型是否自动举例说明
自动类型提升✅ 是int → long安全
强制类型转换❌ 否long → int可能丢失精度或溢出,需手动加 (目标类型)


📈 二、自动类型提升(Widening Conversion)

Java 会自动将小范围 → 大范围的数值类型转换,例如:

int i = 100;

long l = i; // 自动提升 ✅

float f = l; // 自动提升 ✅

double d = f; // 自动提升 ✅

自动提升顺序如下(从小到大):

byte → short → int → long → float → double


⚠️ 三、强制类型转换(Narrowing Conversion)

当你要把大范围 → 小范围的类型转换时,就必须手动强制转换

long l = 123456789L; int i = (int) l; // 强制转换 ❗

⚠️ 风险

  • 可能 丢失数据(精度或高位)

  • 可能 出现溢出

例如:

long big = 2147483648L; // 超过 int 最大值 int small = (int) big; System.out.println(small); // 输出:-2147483648 ❗(绕回来了)


🎨 四、数值类型之间的转换规则图

byte → short → int → long → float → double

反过来都需要强制转换:

double → float → long → int → short → byte


🧠 五、类型转换中发生了什么?(本质)

(int) 3.6 为例:

  • 浮点数变整数时,会截断小数部分,不会四舍五入:

    int x = (int) 3.6; // x = 3

  • 精度丢失示例

    float f = 1_000_000_001; // 会精度丢失,float 只能保证大约 7 位有效数字


🧪 六、特殊类型之间是否能转换?

类型是否能转换说明
boolean ↔ 其他类型❌ 不允许Java 不支持布尔和数字间的转换
char ↔ int✅ 可以char 本质是无符号整数(UTF-16)

char c = 'A'; int code = (int) c; // 65


🧾 七、推荐写法建议

  • 能用自动提升就用,不要随意用强制转换

  • 强制转换前先判断值是否在目标类型的范围内(防止溢出)

相关文章:

  • 网站运营小白可以做吗云南网站建设快速优化
  • 丛台企业做网站推广东莞网站制作的公司
  • 商会网站模板seo求职信息
  • 网站建设seo基本要求网站seo优化推广
  • 网站建设维护学什么权重查询站长工具
  • 广州建网站加备案网站seo属于什么专业
  • 基于STM32的个人健康助手的设计
  • 参数两和显存占用计算
  • 高性能的内存数据存储系统-Redis
  • 微信小程序适配 iPhone 底部导航区域(safe area)的完整指南
  • C# 中 逻辑运算符 - 逻辑与,短路
  • C# Avalonia 绑定模式 Mode 的区别,它们的应用场景
  • thinkphp8之文件上传
  • 永磁同步电机无速度算法--基于同步旋转坐标系锁相环的滑模观测器
  • Matlab里的默认配色推荐
  • 时序数据库 TDengine 助力华锐 D5 平台实现“三连降”:查询快了,机器少了,成本也低了
  • Node.js-fs模块
  • FPGA笔记——ZYNQ-7020运行PS端的USB 2.0端口作为硬盘
  • 多模态AI:让机器像人一样“全感官”理解世界
  • Vue计算属性与监视属性
  • 【数字后端】- 什么是天线效应(Antenna Effect)?如何修复?
  • 黑马python(十六)
  • 【DataWhale组队学习】AI办公实践与应用-数据分析
  • 3 大语言模型预训练数据-3.2 数据处理-3.2.2 冗余去除——2.SimHash算法文本去重实战案例:新闻文章去重场景
  • SpringBoot(九)--- HttpClient、Spring Cache、Spring Task、WebSocket
  • 【图论题典】Swift 解 LeetCode 最小高度树:中心剥离法详解