具有字符串长度限制的Java

具有字符串长度限制的Java,java,Java,我试图用Java解决CodeChef问题,发现我无法创建长度>一百万个字符的字符串(至少用我的编译器)。我在Java文件中粘贴了字符串中Pi的前一百万位小数(例如string Pi=“3.1415926535…151”),它无法编译。当我取出Pi并用一个较短的字符串(如“dog”)替换它时,代码就会编译。有人能确认这是否确实是Java的一个限制吗 谢谢 有人能确认这是否确实是Java的一个限制吗 对。字符串literal1的长度限制为65535。JLS中没有说明,但类文件的结构暗示了这一点;请参

我试图用Java解决CodeChef问题,发现我无法创建长度>一百万个字符的字符串(至少用我的编译器)。我在Java文件中粘贴了字符串中Pi的前一百万位小数(例如string Pi=“3.1415926535…151”),它无法编译。当我取出Pi并用一个较短的字符串(如“dog”)替换它时,代码就会编译。有人能确认这是否确实是Java的一个限制吗

谢谢

有人能确认这是否确实是Java的一个限制吗

对。字符串literal1的长度限制为65535。JLS中没有说明,但类文件的结构暗示了这一点;请参阅并注意字符串长度字段为“u2”。。。这意味着一个16位无符号整数

请注意,字符串对象最多可以包含2^31-1个字符。2^16-1限制用于字符串文本;e、 g.嵌入Java程序源代码中的字符串常量

1-此限制实际上是字符串(修改后的)UTF-8表示形式中的字节数。如果字符串由0x01到0x7f范围内的字符组成,则每个字节表示一个字符。否则,一个字符最多需要6个字节



如果您想要一个表示Pi的前一百万位的字符串,那么最好从文件系统中的文件或类路径上的资源中读取字符。

我认为这个问题与字符串文字无关,而与方法大小有关:。根据这一点,该方法的大小不能超过64k。

您有编译器生成的错误消息吗?@RobertH它不是该问题的重复。您可以通过编程方式创建大于字符串文字限制的字符串。如果没有确切的错误消息,这可能与此相同。如果字符串是在方法中声明的,则可能与方法大小相关。。。但问题中没有这方面的迹象。如果是这样,那么OP将有两个问题。@ColinD:根据,它对静态初始值设定项也有效