为什么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. 场景少+实现成本高,没必要支持。
相关推荐
都叫我大帅哥1 天前
给 Java 程序员的 CSRF 攻击详解:从原理到防御实战
java
江南十四行1 天前
Spring框架核心(上)——IoC控制反转与DI依赖注入详解
java·后端·spring
fb_123451 天前
Linux磁盘分区从入门到实操:MBR_GPT全解析+分区工具实战指南
java·linux·gpt
码智社1 天前
JSON 零基础到资深全体系教程
java·json
wgego1 天前
基础的反序列化一些总结(php和java)
java·开发语言·笔记
机建狂魔1 天前
Codex 接入第三方模型 API 实战:以 Mimo 为例
java·服务器·数据库·ai·ai编程·codex
山峰哥1 天前
数据库工程与SQL调优:从慢查询到秒级响应的实战之路
java·开发语言·数据库·sql·深度优先·启发式算法
乐观的Terry1 天前
11、发布系统-用户认证与权限体系
java·spring boot·spring·spring cloud·mybatis
前端开发张小七1 天前
Java 学习笔记 · 第二课:面向对象核心(封装、继承、多态)及接口与异常
java·后端·程序员
wangjialelele1 天前
Selenium4 + Java Web自动化测试入门指南:从环境搭建到常用操作详解
java·开发语言·前端·测试工具·自动化