千家信息网

jdk1.8中(a+b)*10的10是存在哪里的

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,今天就跟大家聊聊有关jdk1.8中(a+b)*10的10是存在哪里的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。今天看到一个很有意思的提问:
千家信息网最后更新 2026年11月04日jdk1.8中(a+b)*10的10是存在哪里的

今天就跟大家聊聊有关jdk1.8中(a+b)*10的10是存在哪里的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

今天看到一个很有意思的提问:(a+b)*10,10是存放在哪里的?是常量池么?如果是常量池,在进行运算的时候,是通过指针来找到的吧?

某回答:10是在常量池,常量池在jdk1.8以后已经移到元空间了。

要验证这个答案是否正确其实很简单,写一个测试方法通过javap查看编译后的字节码指令就能得出结论。

测试方法源码如下:

private int m(int a, int b) {     int r = a * b * 10;     return r; }

使用javap查看编译后的字节码如下:

private int m(int, int);   descriptor: (II)I   flags: ACC_PRIVATE   Code:     stack=2, locals=4, args_size=3          0: iload_1          1: iload_2          2: imul          3: bipush        10          5: imul          6: istore_3          7: iload_3          8: ireturn

笔者翻阅了一下JVM字节码指令表,相关指令如下图所示。

字节码指令由操作码和零个或多个操作数组成,编译后会被写入方法的Code属性中,操作数要么是立即数,要么是指向class文件结构常量池中常量的索引,要么是跳转目标指令的偏移量。

设立即数10为x,可得出以下结论:

当x取值在区间[-1,5]时,x直接被编译进方法的code属性中,作为iconst指令的操作数;

当x取值在区间[-128,127]时,x也直接被编译进方法的code属性中,作为bipush指令的操作数,取值范围[-128,127]是因为bipush指令的操作数只能是一个字节;

当x取值在区间[-32768,32767]时,x也直接被编译进方法的code属性中,作为sipush指令的操作数,取值范围[-32768,32767]是因为sipush指令的操作数有两个字节;

否则才会将x编译进class的常量池,在进行运算时通过ldc指令从常量池(元空间)push进操作数栈中。

看完上述内容,你们对jdk1.8中(a+b)*10的10是存在哪里的有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

指令 常量 操作数 编译 字节 方法 属性 内容 区间 要么 空间 结论 范围 测试 运算 有意思 两个 多个 指向 指针 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 百单网互联网科技有限公司 科技金融是不是互联网金融 科技互联网公司装修 互联网下的科技发展 互联网科技的发展 万易互联网科技有限公司 南京欣网互联网科技 唐信互联网科技 大连 河南猎农互联网科技有限公司 赶超互联网科技 微信多开 广州市恰铎互联网科技有限公司 开一家科技互联网公司需要多少钱 健康食品互联网创新科技园项目 威龙国际互联网科技公司 用友工业互联网科技发展 富国互联网金融科技混合基金 信承诺互联网科技有限公司 互联网的科技体现在哪里 恒生科技指数 中概互联网 优雇互联网科技有限公司 科技互联网企业 互联网科技官网 互联网养老 桔豆科技 宝灵互联网科技有限公司 注册互联网科技公司经营范围大全 威龙国际互联网科技公司 华中科技大学互联网的牛人 工业互联网科技成果转化 版纳互联网科技选哪家 华人运通互联网科技公司
0