我最近第一次开始使用Java(之前我主要使用C,C ++或汇编)并遇到了子串。我知道Java字符和字符串至少占用字符或字符串应占用的空间的两倍。但为什么子串很难?很多人都建议我在处理密集型平台时尽量避免使用它们,但是在Web服务中随处可见字符串,这可能是处理密集型的,所以我很好奇为什么这么多人有这个意见。
答案 0 :(得分:4)
这可能与先前实施substring()
的方式有关。在较早的Java版本中,在substring()
上调用String
会将原始String
保留在内存中(它们将共享内部char[]
)。如果原始字符串不必要地保留在内存中,这可能会导致内存问题。
在Java 8中不再是这种情况(复制了内部char[]
),您可以自由地获取甚至长Strings
的子字符串。