为什么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. 场景少+实现成本高,没必要支持。
相关推荐
她说彩礼65万5 小时前
C语言 堆区和栈区
java·linux·c语言
Zguigo6 小时前
【CUDA8】第一个CUDA C++ Kernel --vector add
java·开发语言·c++
一技安身6 小时前
【java】JDK8 + JDK17 绿色解压共存方案-全程不修改任何系统环境变量
java·开发语言
java、iOS、Vue7 小时前
Maven antrun vs Jenkins 脚本组装 deb的优缺点、适用场景
java·jenkins·maven
hudd6687 小时前
JavaEE 初阶 - 多线程(初阶)
java·开发语言·java-ee
CarIise7 小时前
Java实训阶段查漏补缺复习笔记2
java·linux·算法
Wang's Blog7 小时前
Java框架 SpringCloud 快速入门: Feign 的性能优化
java·spring cloud·性能优化
蛋蛋的就会顺顺的8 小时前
hot100——二叉树
java·数据结构·算法·leetcode·力扣
打工仔折腾 AI8 小时前
System Prompt 替代 Few-shot:用规则约束大模型输出的省钱实践
java·人工智能·python·spring·langchain·prompt·ai agent 实战
CarIise8 小时前
Java实训阶段查漏补缺复习笔记1
java·开发语言·笔记