Я сильно подозреваю, что это не имеет никакого отношения к тексту в самой строке - я подозреваю, что это именно то, как оно отображается. Например, попробуйте следующее:
public class Test {
public static void main(String[] args) {
String first = "first";
String second = "second";
String third = "third";
String text = first + "\0" + second + "\0" + third;
System.out.println(text.length()); // Prints 18
}
}
Отправляет 18, показывая, что присутствуют все символы. Однако, если вы попытаетесь отобразить text
на ярлыке пользовательского интерфейса, я не удивлюсь, увидев только first
. (То же самое можно сказать и в довольно слабых отладчиках.)
Также вы можете использовать:
char c = text.charAt(7);
И теперь c
должно быть 'e'
, которое является вторая буква «второй».
В принципе, я ожидал бы, что ядро Java вообще не заботится о том, что он содержит U + 0000. Это всего лишь еще один персонаж, что касается Java.
Если это не помогает, пожалуйста, объясните точно , что вы заметили, - что это заставляет вас думать, что остальные данные не добавляются.
EDIT: Другой диагностический подход заключается в том, чтобы распечатать значение Unicode каждого символа в строке:
for (int i = 0; i < text.length(); i++) {
System.out.println((int) text.charAt(i));
}