字符串常量池
首先来看下面一段代码:
1 | public class Test { |
- 在使用String a = “abc”创建字符串对象时,JVM会使用常量池来管理字符串直接量。在执行该语句时,JVM会先检查常量池中是否已经存有”abc”,
若没有则将”abc”存入常量池,否则就复用常量池中已有的”abc”,将其引用赋值给变量a。 - 在使用new String(“abc”)创建字符串对象时,JVM会先使用常量池来管理字符串直接量,即将”abc”存入常量池。然后再创建一个新的String对象,
这个对象会被保存在堆内存中。并且,堆中对象的数据会指向常量池中的直接量。