gomisha
Вот как работает этот цикл и код:
линия
for(char c:s.toCharArray())
это усовершенствованный цикл for, который говорит: пройдите через каждый символ в строке s один за другим. Вам нужно преобразовать строку в массив символов, потому что вы не можете использовать расширенный цикл for для циклического перебора строки - вы получите ошибку компиляции (см.
здесь для получения более подробной информации).
Поскольку код зацикливается на каждом символе, он устанавливает значение в поле
letter
массив int. Когда массив создается, он имеет размер 256, и все значения инициализируются до 0.
Когда он добирается до первого символа в "Hello", "H", код устанавливает массив int с индексом 72 в 1. Почему 72? Потому что это ASCII - значение "H" - см.
эта таблица ASCII позволяет увидеть числовые значения для различных символов.
Линия:
letter[c]++;
увеличивает значение этого индекса массива на 1. Это означает, что если используется одна и та же буква, то она снова увеличит значение int в том же индексе. Вот почему после того, как он читает вторую букву "Л" в "привет", вы видите значение "2". В случае символа "l" Эта буква имеет значение ASCII 108. Так что это значит
letters[108]
был увеличен в два раза, и именно поэтому он отображает 2.
Вы даже можете добавить следующий код в конце, чтобы подтвердить используемые индексы массива:
System.out.println(letter[72]); //H: 1
System.out.println(letter[101]); //e: 1
System.out.println(letter[108]); //l: 2
System.out.println(letter[111]); //o: 1
Все остальные индексы в массиве будут равны 0 (их значение по умолчанию).
Источник:
Java Loops - Ultimate Guide