码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Java常量池理解


    Java常量池理解

    常量池分为两种:静态常量池和运行时常量池。

    静态常量池

    每个类在编译之后都会生成class文件,而class文件中就包含有静态常量池,分析class文件,如下图所示:

    由于常量池中的常量的数量不是固定的,所以常量池的入口需要放置一项u2类型的数据,代表常量池的容量计数值。这里的常量池容量计数值是从1开始的。如图常量池的容量:0x001d(29)。所以共有29个常量。

    运行时常量池

    静态常量池编译完成之后就会保存再class文件中,当class文件中类被加载到内存中的时候,静态常量池中的常量最终都会存放到运行时常量池中,我们最终使用的都是运行时常量池的常量。
    在JDK6.0及之前版本,字符串常量池是放在Perm Gen区(也就是方法区)中;
    在JDK7.0版本,字符串常量池被移到了堆中了。

    静态常量池和运行时常量池的区别?

    看名字基本上就可以猜出来,静态常量池中的常量是不能够改变的,编译完成之后就无法改变了,但是运行时常量池却可以在运行时动态添加,如使用String的intern()方法,这个方法就可以把String中的字符串字面量添加到常量池中去。

    常量池的好处

    1. 空间考虑
      相同的常量只占用一块内存
    2. 时间考虑
      使用==判断字符串是否相等的时候,不用像equals()方法样去比较内容,而是直接比较地址就可以了,因为常量池中保
  • 相关阅读:
    顶级“Redis 笔记”, 缓存雪崩 + 击穿 + 穿透 + 集群 + 分布式锁,NB 了
    相控阵天线(九):平面阵列天线综合(不可分离型切比雪夫分布、圆口径泰勒综合、可分离型分布、配相抵消法)
    leetcode 1523. 在区间范围内统计奇数数目
    解决报错 java.lang.IllegalArgumentException: Cannot format given Object as a Date
    I2C与I3C的对比
    网络-电脑网络突然变成球形, 网络不可用
    lambda的大小探索
    【Linux】安装Hbase
    FGH40N60SMD安森美车规IGBT,ASEMI原厂代理FGH40N60SMD
    如何优雅的比较两个对象是否相等
  • 原文地址:https://blog.csdn.net/cqn2bd2b/article/details/126635654
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号