java虚拟机在class文件中对应类型的常量池中使用了一种类似utf8格式的变体来存储一个常量字符串。

(这里请不要和java se的string api搞混淆,这里谈的是class文件的文件格式问题,我这里只是感觉这种方式比较节省空间,故拿出来请大家看一下。)

utf-8编码模式允许字符串中的所有unicode字符以2个字节的形式表示,而ascii码(空字符null除外)以一个字节表示。

从'\u0001’到'、'\u007f'的所有字符都使用一个字节表示。

字节0: 0 6543210

空字符null('\u0000')和从'\u0080'到'\u07ff'的所有字符使用两个字节表示。

字节0:1 1 1 10 9 8 7 6

字节1:1 0 5 4 3 2 1 0

从'\u0800'到'\uffff'的所有字符使用3个字节表示。

字节0:1 1 1 15 14 13 12

字节1:1 0 11 10 9 8 7 6

字节2:1 0 5 4 3 2 1 0

class文件常量池中字符串类 urf8格的存储格式相关推荐

  1. class文件-常量池类型汇总

    目录: java虚拟机汇总 class文件结构分析 1).class文件常量池中的常量项结构<<== 现在位置 2). 常用的属性表的集合 类加载过程 1).类加载器的原理以及实现 虚拟机 ...

  2. Java中String类、字符串常量池、字符串常用方法

    String类: String代表字符串类,java中所有双引号中的内容都称为字符串,如:"hello".字符串是不可改变的,因此字符串是可以共享使用的,相当于char字符数组,但 ...

  3. java的知识点15——String基础、String类和常量池、String类常用的方法、字符串相等的判断、组合模式

    String基础 1. String类又称作不可变字符序列. 2. String位于java.lang包中,Java程序默认导入java.lang包下的所有类. 3. Java字符串就是Unicode ...

  4. java class文件常量池_《Java虚拟机原理图解》 1.2.3、Class文件中的常量池详解(下)...

    Java内存区域         1.程序计数器(Program Counter Register)(线程私有的)         2.Java虚拟机栈 (Java Virtual Machine S ...

  5. java中的字符串常量池_java字符串常量池

    字符串常量池SCP jdk1.6是放在永久代(8中叫方法区或叫元空间)中; jdk1.7+中,字符串常量池放入了堆中,注意运行时常量依然存放在方法区,例如,Integer a = 40:Java在编译 ...

  6. 读取字符串字符时出错_JVM | 运行时常量池和字符串常量池及intern()

    本文知识点 这一块的知识点,一直都是最为混乱的,网上很多博客有的都自相矛盾,因此,这一块需要深入学习,本文以JDK11为基础,尽量参考官方文档 静态常量池 运行时常量池及字符串的引用 各种String ...

  7. Error,java对常量池来说字符串xxx的UTF8表示过长

    客户端这里自己模拟json数据时,一时没忍住搞得json字符串太长了(idea上大概有600多行吧),这个问题就蹦出来了.老方法直接google.百度然后看到一堆有关String 字符串常量池字符最大 ...

  8. final修饰的变量就是常量?final修饰局部变量在栈还是堆还是常量池中?

    概念 常量池 常量池的好处 Class类文件中的常量池 常量池 运行时常量池 包装类常量池对象池 Java中装箱和拆箱 赋值时 方法调用时 方法运算时 参考 概念 什么是常量? 对于这个问题,可能很多 ...

  9. [JVM]了断局:常量池 VS 运行时常量池 VS 字符串常量池

    一.前言 最近在看JVM, 常量池, 运行时常量池,字符串常量池 这个看的有点懵. 整理一下. class常量池 是在编译的时候每个class都有的. 在编译阶段,存放的是常量的 符号引用 .    ...

最新文章

  1. 祝福遨游:傲游浏览器3月将入住欧盟Win7用户桌面
  2. 别再说程序员不懂时尚
  3. NumericUpDown 控件输入限制小数位
  4. MySQL等值连接的介绍
  5. xamarin android 标签,安卓端Tabbedpage调整在底部位置和标签及取消Android API28 以下的点击特效—-xamarin.forms学习笔记(一)...
  6. faster rcnn resnet_RCNN, Fast R-CNN 与 Faster RCNN理解及改进方法
  7. 华为手机老是显示不到服务器,老显示连接不到服务器
  8. Android 获取sim卡序列号
  9. postman请求404
  10. 【趣味实践】自动补帧算法——RIFE的使用
  11. 条形码转化成二维码_在线条形码生成器
  12. java图片合成_Java图片处理(一)图片合成
  13. win10系统怎么qq远程连接到服务器,QQ远程控制功能在Win10系统上无法使用怎么解决...
  14. linux tar.7z如何解压,Linux下解压:tar、rar、7z命令简单易懂的教程
  15. 洛谷【p1007】独木桥
  16. 软件设计师知识点100条(21~40)
  17. mysql 查询 唯一_Mysql中如何查询所有唯一记录
  18. 公博评级编号1开头代表什么_公博评级的XF,MS,AU都是啥意思
  19. 7-10 sdut-求交错序列前N项和分数 10
  20. 学习笔记:RTC时钟

热门文章

  1. 对日项目中的PG/SE/PL/PM中负责的工作是什么?
  2. 第二周练习 # Python # Cilay
  3. Servlet | HTTP协议、模板方法设计模式
  4. 苹果支付APPle pay
  5. 斜杠青年之技术外包活01
  6. ARM加速更迭,国产“芯”替代迎来新战机,123BOM编辑器(BOM123编辑器)是硬件工程师整理BOM的好帮手,嵌入式硬件工程师未来可期
  7. NZT在线源安装教程
  8. TransReID源码运行(车辆重识别)
  9. 泛型编程、STL的概念、STL模板思想及其六大组件的关系,以及泛型编程(GP)、STL、面向对象编程(OOP)、C++之间的关系
  10. 千兆网卡如何才能达到全速