Поскольку объекты Струнные неизменны, операция оленья кожа подстрока нужно скопировать всю основную последовательность символов. Вместо этого, подстрока может использовать тот же массив символов в качестве исходной строки и просто обратиться к другой точке старта и конечной точки в массив символов. Это означает, что подстрок операции являются эффективными, будучи и быстро и сохранению памяти; дополнительная объект лишь обертка на той же базовой массив символов с различными указатели в этой array.3.
Строки реализованы в JDK в качестве внутреннего массив символов с индексом смещения (на самом деле начала смещения и количество символов). Эта базовая структура крайне маловероятно, чтобы быть изменены в любой версии Java.4. Строки имеют сильную поддержку интернационализации. Это займет большое усилие, чтобы воспроизвести поддержку интернационализации для альтернативного class.5. Тесная взаимосвязь с StringBuffers позволяет Строки, ссылаться на тот же массив символов, используемый StringBuffer. Это обоюдоострый меч.
Для типичных практике, когда вы используете StringBuffer, чтобы манипулировать и добавить символы и типы данных, а затем преобразовать конечный результат в строку, это работает просто отлично. StringBuffer обеспечивает эффективные механизмы для выращивания, вставки, добавления, изменения, и другие виды струнного манипуляции. Результирующая строка затем эффективно ссылается на тот же массив символов без дополнительных копирования символов. Это очень быстро и уменьшает количество объектов используются до минимума, избегая промежуточных объектов.
Тем не менее, если объект StringBuffer впоследствии изменены, массив символов в этом StringBuffer копируется в новый массив символов, которые в настоящее время, на которое ссылается StringBuffer. Объект Строка сохраняет ссылку на ранее совместно массив символов. Это означает, что копирование накладные расходы могут возникнуть в са