java中字符串中的最大字符数

时间:2012-08-09 21:56:10

标签: java

为了尝试提高性能,我打算使用包含大量字符的字符串。我想知道是否有任何尺寸可以被认为是最佳的。例如,如果我声明一个字符串数组,它可以容纳5000个字符串,并且如果每个单元格中的字符串包含5000-7000个字符,我想是否有任何性能降级。

请建议。

2 个答案:

答案 0 :(得分:3)

由于存储在常量池中,字符串文字被限制为65535字节。我不确定运行时字符串是否有限制,除了由于数组寻址而明显限制为2 ^ 31-1。

编辑以清除:修改后的Utf8编码为65535字节。它与普通的Utf8相同,只是空字符是两个字节,BMP外的字符使用代理对(6个字节而不是4个字节)。如果您只是在执行ascii,那么每个字符只需一个字节。

答案 1 :(得分:3)

原则上,正如锑提到的那样,字符串的限制是你可以在数组中容纳的字符数,即2 ^ 31-1。

您提到的数据量大约在100MB左右:如果您确实坚持在该数据顺序范围内,那么这不是一个大问题。如果您考虑使用10倍以上,那么可能需要开始重新思考。

您可以考虑做的一件事是尝试声明您的代码传递CharSequences而不是字符串。你不能覆盖String,但你可以创建自己的实现CharSequence的类,如果你后来意识到这样做可以为你带来一些优化(例如以某种方式压缩内部表示)。

除此之外,我会按照您的意图编写代码,然后在实际操作中遇到性能问题时进行分析。