Почему нет обратного метода в классе String
в Java? Вместо этого метод reverse ()
предоставляется в StringBuilder
? Есть ли для этого причина? Но String имеет split ()
, regionMatches ()
и т. д., которые более сложны, чем метод reverse ()
.
Когда они добавили эти методы, почему бы не добавить reverse ()
?
Как примечание: в Scala вы используете тот же класс java.lang.String
и получаете метод reverse
(наряду со всеми другими полезными вещами). То же самое происходит с неявными преобразованиями , так что ваш String
автоматически преобразуется в класс, который имеет метод reverse
. Это действительно довольно умно, и устраняет необходимость раздувать базовый класс сотнями методов.
reverse () действует на this , изменяя текущий объект, а объекты String неизменны - их нельзя изменить.
Особенно эффективно делать reverse () in situ - размер, как известно, одинаков, поэтому никакого выделения не требуется, итераций цикла вдвое меньше, чем было бы в копия, и, для больших строк, локальность памяти является оптимальной. Посмотрев на код, можно увидеть, что для его ускорения были предприняты большие усилия. Я подозреваю, что автор (ы) имел в виду конкретный вариант использования, который требовал высокой производительности.