【发布时间】:2016-09-13 10:14:35
【问题描述】:
我正在尝试直接从文件中反序列化字符串,但我有一个关于超长字符串的问题:Java 字符串的字符数限制等于 Integer.MAX_VALUE,即 31^2-1。
但是我的问题来了:当我有一个 UTF-8 字符串,其大小略小于该大小但由大小超过 1 个字节的字符组成,然后我要求 Java 给我字节数组时会发生什么?
为了更清楚,如果我可以运行这段代码会发生什么? (我没有足够的内存):
String toPrint = "";
String string100 = "";
int max = Integer.MAX_VALUE -100;
for (int i = 0; i < 100; i += 10) {
string100 += "1234567ñ90";
}
for (int i = 0; i < max; i += 100) {
toPrint += string100;
}
System.out.println("String complete!");
byte[] byteArray = toPrint.getBytes(StandardCharsets.UTF_8);
System.out.println(byteArray.length);
System.exit(0);
它是否打印“字符串完成!”?还是之前断过?
【问题讨论】: