StringTable
在上一篇文章中我们了解了StringTable,也很清楚地了解StringTable具有下面的几大特性:
- 常量池中的字符串仅是符号,第一次用到时才变为对象。
- 利用串池的机制,来避免重复创建字符串对象。
- 字符串变量拼接的原理是StringBuilder(1.8)。
- 字符串常量拼接的原理是编译期间的优化。
除此之外,StringTable还具有可以使用intern方法,主动将串池中还没有的字符串对象放入串池。所谓的intern方法就是将字符串对象尝试放入串池中,如果有则并不会放入,如果没有则放入串池,两个都会返回串池中的对象。
上面是针对于1.8的。在1.6中大体相同,不过如果没有的时候会复制一份然后再放入串池中。