You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中整数、双精度字面量的存储位置咨询

Java中整数与双精度字面量的存储位置

编译期:存放在.class文件的常量池

当你编写包含字面量的代码(比如int count = 50; double rate = 0.8;),编译后这些字面量会被写入.class文件的常量池区域。常量池是.class文件的核心部分,用于存储各类字面量、符号引用等编译期确定的数据。

运行期:分场景存储

  • -128到127范围内的整数字面量:JVM会通过IntegerCache类预先缓存这些值,该缓存属于类的静态数据,类加载完成后会存储在元空间(Java 8及以后取代永久代的内存区域)中,避免重复创建对象。
  • 超出缓存范围的整数、所有双精度字面量:当代码中对这类字面量进行装箱操作(比如Integer num = 200; Double price = 19.99;)时,JVM会在堆内存中创建对应的包装类实例;如果只是作为基本类型变量使用(比如int num = 200;),则值会直接加载到栈帧的局部变量表,不会在堆或元空间存储对象。
  • 类中的静态常量字面量:如果是被static final修饰的常量(比如public static final int MAX = 1000;),编译期会把值直接嵌入到使用它的代码中,运行时不会在堆或元空间存储额外对象,除非该常量是通过复杂表达式生成的。

内容的提问来源于stack exchange,提问作者xyz xyz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 01:57:04