2013-11-12 5 views
-1

Это может показаться странным вопросом, но как работает string.replace() в двоичном формате?Как работает функция string.replace()?

Извините за короткий вопрос.

EDIT:

Так что я предполагаю, что я не сделал себе ясно.

Как выглядит двоичный файл для переменной класса String. Таким образом, я не могу делать головы или хвосты исходного кода.

+9

Что вы имеете в виду _in binary_? Кроме того, исходный код свободно доступен. –

+5

Я дома с работы сейчас. Этот вопрос БОЛЬШЕ менее болезненным и достойным лица с пивом в руке. – Brian

+0

Поразмыслить немного? –

ответ

0

Существует два способа использования метода замены: один для замены «строки» на другую «строку», а другой - для замены символов в строке указанным символом.

При замене последовательности «строка» другой «строкой» виртуальной машине Java придется загружать другой класс (класс Matcher). Этот другой класс, в свою очередь, преобразует целевую строку в нечто, не содержащее нетерминальных символов регулярных выражений. Преобразованная строка затем выполняется другим классом для последовательностей символов, соответствующих старой последовательности символов. Эти последовательности символов добавляются один за другим, используя другой класс StringBuffer, но на этот раз замена закодирована в буферную память вместо последовательности «старой строки». Контроль из класса Matcher затем вернется в класс String. Я не буду подробно останавливаться на этой части, поскольку мы говорим о другом классе здесь.

При замене символов в строке указанным символом управление виртуальной машиной Java остается в «двоичных» инструкциях класса String. Во-первых, проверяется, будет ли фактически замена, которая произойдёт. Проверяются такие вещи, как равенство новых и старых символов, а также наличие целевого символа. Как только эти «тесты» пройдены, последовательность символов Unicode создается как копия целевого значения String. Эта последовательность символов проходит, а затем местоположение каждого «старого» символа заполняется один за другим с помощью битовой последовательности «нового» символа. Как только фактическое заполнение завершается, из указанной последовательности символов создается новый класс типа String. Возвращаемая строка возвращается.

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

+0

Этот ответ не имеет смысла. «преобразует целевую строку во что-то, что не имеет регулярного выражения»? Что это должно значить? – user2357112

+0

@ user2357112 Что я имел в виду, не было никаких терминальных символов регулярного выражения. Я уже отредактировал ответ. Спасибо, я не заметил, что мой ответ для 1-й замены остановился. –

+0

'replace' не использует регулярные выражения. Он заменяет буквальные последовательности символов. – user2357112

Смежные вопросы