为什么switch不支持long

首先最核心的原因:Java 设计 switch 时,底层是基于 int 类型实现的

  • switch 的字节码指令(比如 lookupswitch/tableswitch)只认 int 类型,所有能进 switch 的类型(byte/short/char/String),最终都会转成 int 处理;
  • long 是 64 位,取值范围远大于 int(32 位),没法无损转成 int,所以直接不支持。

其次是设计层面:就算硬要支持 long,也会大幅增加 JVM 实现复杂度,而实际开发中用 long 做 switch 判断的场景极少,性价比太低。

总结:

  1. switch 底层依赖 int 指令实现,long 无法转 int;
  2. 场景少+实现成本高,没必要支持。
相关推荐
盐真卿2 小时前
python第八部分:高级特性(二)
java·开发语言
上海合宙LuatOS2 小时前
LuatOS核心库API——【audio 】
java·网络·单片机·嵌入式硬件·物联网·音视频·硬件工程
汤姆yu2 小时前
基于springboot的尿毒症健康管理系统
java·spring boot·后端
TT哇2 小时前
【实习】银行经理端线下领取扫码功能实现方案
java
野犬寒鸦2 小时前
从零起步学习JVM || 第一章:类加载器与双亲委派机制模型详解
java·jvm·数据库·后端·学习
黎雁·泠崖2 小时前
【魔法森林冒险】2/14 抽象层设计:Figure/Person类(所有角色的基石)
java·开发语言
怒放吧德德3 小时前
后端 Mock 实战:Spring Boot 3 实现入站 & 出站接口模拟
java·后端·设计
biyezuopinvip3 小时前
基于Spring Boot的企业网盘的设计与实现(任务书)
java·spring boot·后端·vue·ssm·任务书·企业网盘的设计与实现
脸大是真的好~3 小时前
EasyExcel的使用
java·excel