我对 Java 中的字符串池感到困惑。我在阅读 Java 中的 String 章节时遇到了这一点。请帮助我通俗地理解字符串池实际上是做什么的。
这打印true
(即使我们不使用equals
方法:比较字符串的正确方法)
String s = "a" + "bc";
String t = "ab" + "c";
System.out.println(s == t);
当编译器优化您的字符串文字时,它会看到s
and t
具有相同的值,因此您只需要一个字符串对象。这是安全的,因为String
在Java中是不可变的。
结果,双方s
and t
指向同一个对象并节省一些内存。
名称“字符串池”来自这样的想法:所有已定义的字符串在创建新字符串之前都存储在某个“池”中String
对象编译器检查此类字符串是否已定义。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)