Ich versuche, Strings von Dateien direkt zu deserialisieren und ich habe eine Frage über sehr lange Strings: Java Strings haben eine Anzahl von Zeichen gleich Integer.MAX_VALUE
, die 31^2-1 ist.Java String UTF-8 Grenzen
Aber hier kommt meine Frage: Was passiert, wenn ich einen UTF-8 String mit etwas weniger als dieser Größe habe, aber von Zeichen mit einer Größe von mehr als 1 Byte gebildet wird und dann frage ich Java das Byte-Array?
Um es klarer zu machen, was passiert, wenn ich diesen Code ausführen könnte? (Ich habe nicht genügend RAM):
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);
Wird "String complete!" Gedruckt? Oder bricht es vorher?
Ich stimme der schrecklichen Leistung zu, es ist nur ein Beweis für das Konzept XD – nicovell3
Aber dann, wie kann Java serialisieren und deserialisieren? Da Java ein UTF-8-Array zum Serialisieren verwendet ... – nicovell3
@ nicovell3 Wenn die String-Serialisierung "String.getBytes (UTF-8)" aufruft, schlägt sie fehl. Wenn es nicht fehlschlägt, wird eine andere Methode zum Konvertieren in UTF-8 verwendet. –