字符串池与常量池

阿修罗

让我们看一下下面的代码片段:

  String s1 = "Hello";
  String s2 = "Hello"; 

由于内部变量,这两个变量都指向同一对象。由于字符串是不可变的,因此仅创建一个对象,并且两个对象都引用同一对象。

Aconstant pool也是东西,它包含在类中声明的所有常量(整数,字符串等)。它特定于每个类。

 System.out.println("Hello");  // I believe this Hello is different from above.

问题:

  1. 是否string pool在常量池中引用常量字符串对象的池?
  2. 如果是,字符串池在整个应用程序中通用的还是特定于某个类?
迈克·塞缪尔(Mike Samuel)

我的问题是

  1. 字符串池是否引用常量池中的常量字符串对象池?

没有。

“常量池”是指对Java类加载器有意义的类文件中字节的一种特殊格式的集合。其中的“字符串”已序列化,它们不是Java对象。还有很多常量,而不仅仅是字符串。

请参见第4.4章常量池表

Java虚拟机指令不依赖于类,接口,类实例或数组的运行时布局。相反,说明引用constant_pool表中的符号信息

相反,“字符串池”在运行时使用(不只是在类加载期间使用),仅包含字符串,而字符串池中的“字符串”是java对象。“字符串池”是从java.lang.String实例到java.lang.String用于内部字符串的实例的线程安全弱映射

第3.10.5章。字符串文字

字符串文字是对类实例的引用String(第4.3.1节,第4.3.3节)。

而且,字符串文字总是引用class相同实例String这是因为使用方法将字符串文字(或更常见的是作为常量表达式的值的字符串(第15.28节))“插入”以便共享唯一的实例String.intern

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

与字符串常量池相关的查询

来自分类Dev

字符串常量池和实习生

来自分类Dev

Java-字符串和常量池

来自分类Dev

字符串文字池

来自分类Dev

需要了解的字符串,字符串常量池和字符串实习生方法

来自分类Dev

字符串常量池(JDK 6)中的“ a”与'new String(“ a”)'与'new String(“ a”)。intern()'

来自分类Dev

Java字符串池相关的疑问

来自分类Dev

Java字符串文字池

来自分类Dev

Java SE字符串池

来自分类Dev

关于字符串池的查询

来自分类Dev

Java字符串创建和字符串池

来自分类Dev

Java字符串创建和字符串池

来自分类Dev

如果在字符串常量池区域中创建(或已经存在)相同的字符串文字,则在堆中创建重复的String对象有什么好处?

来自分类Dev

Java中字符串池的基本机制?

来自分类Dev

读取字符串实习生池的内容

来自分类Dev

为Alloy提供定制字符串的“池”

来自分类Dev

StringBuilder.append()方法是否填满字符串池?

来自分类Dev

如何字符串池在Java的桶来衡量

来自分类Dev

实习生字符串,字符串池和烫发空间上的垃圾回收

来自分类Dev

如何将字符串对象转换为字符串池对象?

来自分类Dev

字符串内存分配和字符串池概念

来自分类Dev

Java-字符串对象是内部引用的字符串池吗?

来自分类Dev

JVM常量池条目

来自分类Dev

是否可以在运行时将字符串添加到字符串池?

来自分类Dev

jvm字符串池实习生中有多少个字符串

来自分类Dev

字符串池在堆的PermGen区域或Object区域中创建

来自分类Dev

尝试打印字符串池信息时出现“此时统计不可用”?

来自分类Dev

创建了多少个对象(字符串池+堆)

来自分类Dev

如何防止Mybatis varchar在Java中进入字符串池?

Related 相关文章

  1. 1

    与字符串常量池相关的查询

  2. 2

    字符串常量池和实习生

  3. 3

    Java-字符串和常量池

  4. 4

    字符串文字池

  5. 5

    需要了解的字符串,字符串常量池和字符串实习生方法

  6. 6

    字符串常量池(JDK 6)中的“ a”与'new String(“ a”)'与'new String(“ a”)。intern()'

  7. 7

    Java字符串池相关的疑问

  8. 8

    Java字符串文字池

  9. 9

    Java SE字符串池

  10. 10

    关于字符串池的查询

  11. 11

    Java字符串创建和字符串池

  12. 12

    Java字符串创建和字符串池

  13. 13

    如果在字符串常量池区域中创建(或已经存在)相同的字符串文字,则在堆中创建重复的String对象有什么好处?

  14. 14

    Java中字符串池的基本机制?

  15. 15

    读取字符串实习生池的内容

  16. 16

    为Alloy提供定制字符串的“池”

  17. 17

    StringBuilder.append()方法是否填满字符串池?

  18. 18

    如何字符串池在Java的桶来衡量

  19. 19

    实习生字符串,字符串池和烫发空间上的垃圾回收

  20. 20

    如何将字符串对象转换为字符串池对象?

  21. 21

    字符串内存分配和字符串池概念

  22. 22

    Java-字符串对象是内部引用的字符串池吗?

  23. 23

    JVM常量池条目

  24. 24

    是否可以在运行时将字符串添加到字符串池?

  25. 25

    jvm字符串池实习生中有多少个字符串

  26. 26

    字符串池在堆的PermGen区域或Object区域中创建

  27. 27

    尝试打印字符串池信息时出现“此时统计不可用”?

  28. 28

    创建了多少个对象(字符串池+堆)

  29. 29

    如何防止Mybatis varchar在Java中进入字符串池?

热门标签

归档