Почему sys.getrefcount () возвращает 2?

Я сильно подозреваю, что это не имеет никакого отношения к тексту в самой строке - я подозреваю, что это именно то, как оно отображается. Например, попробуйте следующее:

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));
}
16
задан codeforester 10 October 2017 в 04:25
поделиться