Java Swing JTextArea 的长度?

Már*_*óth 2 java swing limit jframe jtextarea

我有一个问题,在编码过程中弹出:我想确定一下,关于这个问题,所以我希望你能帮助我!

那么我在想,JTextArea长度是无限的吗?或者最多可以使用多少个字符?

我尝试手动编写它,但我感到无聊,大约 5000 行和 100 000 个字符,那么 的限制是多少JTextArea

我正在开发一个聊天程序,这对我来说很重要,但我没有找到答案。

Mad*_*mer 5

那么,我在想,JTextArea的长度是无限的吗?或者最多可以使用多少个字符?

不,JTextArea不是infinite

JTextArea我们可以根据仅返回 a 的事实来暗示最大长度String,其中 alength返回 a int。这意味着 a 的最大长度JTextArea必然为Integer.MAX_VALUE,但由于数组开销,会稍微小一些。但在实践中,您可能会发现它要小得多,因为需要将数组以连续的方式放置在内存中,因此这将取决于 JVM 有多少可用内存以及它的碎片程度。

我们可以进一步研究这一点并查看PlainDocument,它是 的默认Document使用JTextArea,它使用 achar[]作为其内部数据结构,就像 一样String

这进一步具体化了 a 的极限JTextArea被限制为小于的推理Integer.MAX_VALUE

你可以看看Java数组有最大尺寸吗?为什么我不能创建大尺寸的数组?为什么ArrayList 的最大数组大小是 Integer.MAX_VALUE - 8?讨论为什么数组不能声明为Integer.MAX_VALUE

现在,在有人建议您可以编写 a 的链表实现之前Document,请不要忘记两者DocumentJTextArea依赖String,这是一个关键的限制因素