Java如何为引擎盖下的字符串实现蝇量模式?
2022-09-02 03:20:52
如果您有两个 String 实例,并且它们相等,则在 Java 中,它们将共享相同的内存。这是如何在引擎盖下实现的?
编辑:我的应用程序使用大量的 String 对象,其中许多是相同的。利用Java String常量池的最佳方法是什么,以避免创建自定义的flyweight实现?
如果您有两个 String 实例,并且它们相等,则在 Java 中,它们将共享相同的内存。这是如何在引擎盖下实现的?
编辑:我的应用程序使用大量的 String 对象,其中许多是相同的。利用Java String常量池的最佳方法是什么,以避免创建自定义的flyweight实现?
查看源代码(整个java api的源代码是JDK的一部分)。java.lang.String
总结一下:字符串包装 .这种支持永远不会被修改。这是通过既不泄漏也不在类外捕获它来实现的。但是,多个可以共享相同的内容(请参见 的实现)。char[]
char[]
char[]
String
Strings
char[]
String.substring
还有实习机制,如其他答案所述。