Существует два способа использования метода замены: один для замены «строки» на другую «строку», а другой - для замены символов в строке указанным символом.
При замене последовательности «строка» другой «строкой» виртуальной машине Java придется загружать другой класс (класс Matcher). Этот другой класс, в свою очередь, преобразует целевую строку в нечто, не содержащее нетерминальных символов регулярных выражений. Преобразованная строка затем выполняется другим классом для последовательностей символов, соответствующих старой последовательности символов. Эти последовательности символов добавляются один за другим, используя другой класс StringBuffer, но на этот раз замена закодирована в буферную память вместо последовательности «старой строки». Контроль из класса Matcher затем вернется в класс String. Я не буду подробно останавливаться на этой части, поскольку мы говорим о другом классе здесь.
При замене символов в строке указанным символом управление виртуальной машиной Java остается в «двоичных» инструкциях класса String. Во-первых, проверяется, будет ли фактически замена, которая произойдёт. Проверяются такие вещи, как равенство новых и старых символов, а также наличие целевого символа. Как только эти «тесты» пройдены, последовательность символов Unicode создается как копия целевого значения String. Эта последовательность символов проходит, а затем местоположение каждого «старого» символа заполняется один за другим с помощью битовой последовательности «нового» символа. Как только фактическое заполнение завершается, из указанной последовательности символов создается новый класс типа String. Возвращаемая строка возвращается.
Конечно, этот ответ можно было бы изложить еще больше. Надеюсь, подглядывающие могут помочь мне и с моими вопросами.
Что вы имеете в виду _in binary_? Кроме того, исходный код свободно доступен. –
Я дома с работы сейчас. Этот вопрос БОЛЬШЕ менее болезненным и достойным лица с пивом в руке. – Brian
Поразмыслить немного? –