我试图解决Java中的CodeChef问题,并发现我无法创建长度> 100万字符的字符串(至少使用我的编译器).我在一个字符串中粘贴了Pi的前一百万个十进制数字(例如String PI ="3.1415926535 ... 151"),它无法编译.当我取出Pi并将其替换为像"dog"这样的较短字符串时,代码会编译.任何人都可以确认这是否确实是Java的限制?
谢谢.
Ste*_*n C 12
任何人都可以确认这是否确实是Java的限制?
是.字符串文字1的长度限制为65535 .它没有在JLS中声明,但它是由类文件的结构暗示的; 请参阅JVM Spec 4.4.7并注意字符串长度字段是'u2'...这意味着16位无符号整数.
请注意,String对象最多可包含2 ^ 31 - 1个字符.2 ^ 16 -1限制用于字符串文字 ; 例如,嵌入在Java程序的源代码中的字符串常量.
1 - 此限制实际上取决于String的(修改的)UTF-8表示中的字节数.如果字符串由0x01到0x7f范围内的字符组成,则每个字节代表一个字符.否则,字符最多可能需要6个字节.
如果你想要一个表示Pi的前一百万个数字的字符串,那么最好从文件系统中的文件或类路径上的资源中读取字符.
| 归档时间: |
|
| 查看次数: |
8156 次 |
| 最近记录: |