首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >一个Java字符串可以有多少个字符?

一个Java字符串可以有多少个字符?
EN

Stack Overflow用户
提问于 2009-07-24 20:24:41
回答 6查看 325K关注 0票数 167

我正在尝试来自Sphere Online裁判(SPOJ)的The Next Palindrome问题,在那里我需要找到一个最多为一百万位数字的整数的回文。我想过使用Java的函数来反转字符串,但是它们允许字符串这么长吗?

EN

回答 6

Stack Overflow用户

发布于 2009-07-24 20:26:56

我相信它们最多可以有2^31-1个字符,因为它们由内部数组保存,并且在Java中数组是由整数索引的。

票数 21
EN

Stack Overflow用户

发布于 2016-12-08 02:42:51

虽然理论上可以使用Integer.MAX_VALUE字符,但JVM可以使用的数组大小是有限制的。

代码语言:javascript
复制
public static void main(String... args) {
    for (int i = 0; i < 4; i++) {
        int len = Integer.MAX_VALUE - i;
        try {
            char[] ch = new char[len];
            System.out.println("len: " + len + " OK");
        } catch (Error e) {
            System.out.println("len: " + len + " " + e);
        }
    }
}

在Oracle Java 8上更新92打印

代码语言:javascript
复制
len: 2147483647 java.lang.OutOfMemoryError: Requested array size exceeds VM limit
len: 2147483646 java.lang.OutOfMemoryError: Requested array size exceeds VM limit
len: 2147483645 OK
len: 2147483644 OK

注意:在Java9中,字符串将使用byte[],这意味着多字节字符将使用多个字节,并进一步减少最大值。如果你有所有四个字节的代码点,例如表情符号,你只能得到大约5亿个字符

票数 16
EN

Stack Overflow用户

发布于 2009-07-24 21:58:28

您是否考虑过使用BigDecimal而不是String来保存您的数字?

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1179983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档