当前位置: 首页 > 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


🧾 七、推荐写法建议

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

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

http://www.lqws.cn/news/522055.html

相关文章:

  • Sortablejs动态同类型穿插
  • npm 报错:“无法加载文件 ...npm.ps1,因为在此系统上禁止运行脚本” 解决方案(附执行策略说明)
  • 创新让生活更美好丨“鑫亘科技亮相2025上海CMEF,创新医疗材料引领未来!”
  • 【Docker基础】Docker容器管理:docker pause、stop、kill区别
  • Gemini 2.5 Pro vs Claude 4:2025年高考物理真题实战对比评测(国内直接使用)
  • 【Java高频面试问题】JVM篇
  • python接口测试参数multipart/form-data格式不能有多余的空格或 tab 缩进
  • 逆向入门(8)汇编篇-rol指令的学习
  • Windows下Zookeeper客户端启动缓慢问题分析与解决方案
  • oracle物化视图
  • Jenkins JNLP与SSH节点连接方式对比及连接断开问题解决方案
  • 强化学习概述
  • 【Python】图像+点云 结合显示
  • Linux 内存管理之page cache
  • 【PyTorch】保存和加载模型
  • 【cursor实战】分析python下并行、串行计算性能
  • <六> k8s + promtail + loki + grafana初探
  • 深度学习入门--(二)感知机
  • 利用代理IP爬取Shopee网页数据
  • C/C++中调用Java实现
  • keil5 cannot copy license file to “Download“ folder
  • 阿里云Web应用防火墙3.0使用CNAME接入传统负载均衡CLB
  • 量学云讲堂王岩江宇龙2025年第58期视频 主课正课系统课+收评
  • 【EDA软件】【应用功能子模块网表提供和加载编译方法】
  • Web层注解
  • 浙大/浙工大合作iMeta(1区 | IF 33.2):单微生物RNA-seq + 聚类解析肠道关键种代谢功能
  • MySQL常用函数性能优化及索引影响分析
  • ES和 Kafka 集群搭建过程中的典型问题、配置规范及最佳实践
  • C++11原子操作:从入门到精通
  • Fisco Bcos学习 - 搭建第一个区块链网络