我正在尝试使用Java解决一个CodeChef问题,但发现我无法创建长度大于一百万个字符的字符串(至少是在我的编译器中)。在Java文件中,我将圆周率的前一百万位小数复制到了一个字符串中(例如String PI = "3.1415926535...151"),结果导致编译失败。当我移除Pi并用一个更短的字符串像“dog”来替换它时,代码就可以编译了。请问是否有人能够确认这是否确实是Java的限制?
谢谢。
谢谢。
如果你想要一个表示Pi前一百万个数字的字符串,那么最好从文件系统或类路径上的资源中读取字符。
1-这个限制实际上是对字符串的(修改后)UTF-8表示中字节数的限制。如果字符串由0x01到0x7f范围内的字符组成,那么每个字节代表一个字符。否则,一个字符可能需要多达6个字节。
我认为这个问题与字符串字面量无关,而是与方法大小有关:http://chrononsystems.com/blog/method-size-limit-in-java。根据该文章,方法的大小不能超过64k。