Spec-Zone .ru
спецификации, руководства, описания, API
Содержание | Предыдущий | Следующий | Индекс

20.13 Класс java.lang.StringBuffer

Строковый буфер походит на a String (§20.12), но может быть изменен. В любом моменте времени это содержит некоторую определенную последовательность символов, но длина и контент последовательности могут быть изменены через определенные вызовы метода.

public class StringBuffer {
	public StringBuffer();
	public StringBuffer(int length)
throws NegativeArraySizeException; public StringBuffer(String str); public String toString(); public int length(); public void setLength(int newLength) throws IndexOutOfBoundsException; public int capacity(); public void ensureCapacity(int minimumCapacity); public char charAt(int index) throws IndexOutOfBoundsException; public void setCharAt(int index, char ch) throws IndexOutOfBoundsException; public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
throws NullPointerException, IndexOutOfBoundsException; public StringBuffer append(Object obj); public StringBuffer append(String str); public StringBuffer append(char[] str) throws NullPointerException; public StringBuffer append(char[] str, int offset, int len) throws NullPointerException, IndexOutOfBoundsException; public StringBuffer append(boolean b); public StringBuffer append(char c); public StringBuffer append(int i); public StringBuffer append(long l); public StringBuffer append(float f); public StringBuffer append(double d); public StringBuffer insert(int offset, Object obj) throws IndexOutOfBoundsException; public StringBuffer insert(int offset, String str) throws IndexOutOfBoundsException; public StringBuffer insert(int offset, char[] str) throws NullPointerException, IndexOutOfBoundsException; public StringBuffer insert(int offset, boolean b) throws IndexOutOfBoundsException; public StringBuffer insert(int offset, char c) throws IndexOutOfBoundsException; public StringBuffer insert(int offset, int i) throws IndexOutOfBoundsException; public StringBuffer insert(int offset, long l) throws IndexOutOfBoundsException; public StringBuffer insert(int offset, float f) throws IndexOutOfBoundsException; public StringBuffer insert(int offset, double d) throws IndexOutOfBoundsException; public StringBuffer reverse(); }
У строкового буфера есть емкость. Пока длина символьной последовательности, содержавшейся в строковом буфере, не превышает емкость, не необходимо создать новый внутренний буферный массив.

Строковые буферы безопасны для использования многократными потоками. Методы синхронизируются, где необходимый так, чтобы все операции на любом определенном экземпляре вели себя, как будто они происходят в некотором последовательном порядке, который является непротиворечивым с порядком вызовов метода, сделанных каждым из отдельных включенных потоков.

Строковые буферы могут использоваться компилятором, чтобы реализовать оператор связи двоичной строки + (§15.17.1). Например, предположить k имеет тип int и a имеет тип Object. Затем выражение:

k + "/" + a
может быть скомпилирован, как будто это было выражение:

new StringBuffer().append(k).append("/").
append(a).toString()
который создает новый строковый буфер (первоначально пустой), добавляет строковое представление каждого операнда к строковому буферу поочередно, и затем преобразовывает содержание строкового буфера к строке. В целом, это избегает создавать много временных строк.

Основные операции на a StringBuffer append и insert методы, которые перегружаются, чтобы принять данные любого типа. Каждый эффективно преобразовывает данную данную величину в строку и затем добавляет символы той строки к содержанию строкового буфера. append метод всегда добавляет эти символы в конце буфера; insert метод добавляет символы в указанной точке.

Например, если z обращается к строковому буферному объекту, текущее содержание которого является символами"start", тогда вызов метода z.append("le") изменил бы строковый буфер, чтобы содержать символы"startle", но z.insert(4, "le") изменил бы строковый буфер, чтобы содержать символы"starlet".

Вообще, если sb обращается к экземпляру a StringBuffer, тогда sb.append(x) имеет тот же самый эффект как sb.insert(sb.length(), x).

20.13.1 public StringBuffer()

Этот конструктор инициализирует недавно создаваемый StringBuffer возразите так, чтобы это первоначально представило пустую символьную последовательность и имело емкость 16.

20.13.2 public StringBuffer(int length)
throws NegativeArraySizeException

Этот конструктор инициализирует недавно создаваемый StringBuffer возразите так, чтобы это первоначально представило пустую символьную последовательность, но определило емкость параметром.

Если параметр отрицателен, a NegativeArraySizeException бросается.

20.13.3 public StringBuffer(String str)

Этот конструктор инициализирует недавно создаваемый StringBuffer возразите так, чтобы это представило ту же самую последовательность символов как параметр; другими словами, начальное содержание строкового буфера копия строки параметра. Начальная емкость строкового буфера 16 плюс длина строки параметра.

20.13.4 public String toString()

Новое String объект создается и инициализируется, чтобы содержать символьную последовательность, в настоящий момент представленную строковым буфером; новое String тогда возвращается. Любые последующие изменения к строковому буферу не влияют на содержание возвращенной строки.

Совет реализации: Этот метод может быть кодирован, чтобы создать новое String объект, не выделяя новую память, чтобы содержать копию символьной последовательности. Вместо этого строка может совместно использовать память, используемую строковым буфером. Любая последующая работа, которая изменяет контент или емкость строкового буфера, должна тогда сделать копию внутреннего буфера тогда. Эта стратегия эффективна для того, чтобы уменьшить объем памяти, выделенный работой конкатенации строк (§15.17.1), когда это реализуется, используя строковый буфер.

Переопределения toString метод Object (§20.1.2).

20.13.5 public int length()

Этот метод возвращает длину последовательности символов, в настоящий момент представленных этим StringBuffer объект.

20.13.6 public int capacity()

Текущая емкость этого StringBuffer объект возвращается.

20.13.7 public void ensureCapacity(int minimumCapacity)

Если текущая емкость этого StringBuffer объект является меньше чем параметр, затем новый внутренний буфер создается с большей емкостью. Новая емкость будет большим из:

Если minimumCapacity параметр неположителен, этот метод не предпринимает мер и просто возвращается.

20.13.8 public void setLength(int newLength)
throws IndexOutOfBoundsException

Этот строковый буфер изменяется, чтобы представить новую символьную последовательность, длина которой определяется параметром. Для каждого неотрицательного индекса k меньше чем newLength, символ по индексу, k в новой символьной последовательности является тем же самым как символом по индексу k в старой последовательности, если k является меньше чем длина старой символьной последовательности; иначе, это - нулевой символ '\u0000'. Этот метод также вызывает ensureCapacity метод (§20.13.7) с параметром newLength.

Если параметр отрицателен, IndexOutOfBoundsException бросается.

20.13.9 public char charAt(int index)
throws IndexOutOfBoundsException

Указанный символ последовательности, в настоящий момент представленной строковым буфером, как обозначено index параметр, возвращается. Первый символ последовательности по индексу 0, следующее по индексу 1, и так далее, что касается индексации массива.

Если index параметр отрицателен или не меньше чем текущая длина (§20.13.5) строкового буфера, IndexOutOfBoundsException бросается.

20.13.10 public void setCharAt(int index, char ch)
throws IndexOutOfBoundsException

Строковый буфер изменяется, чтобы представить новую символьную последовательность, которая идентична старой символьной последовательности, за исключением того, что это содержит символ ch в позиции index.

Если index параметр отрицателен или не меньше чем текущая длина (§20.13.5) строкового буфера, IndexOutOfBoundsException бросается.

20.13.11 public void getChars(int srcBegin, int srcEnd,
char[] dst, int dstBegin)
throws NullPointerException,
IndexOutOfBoundsException

Символы копируются с этого StringBuffer объект в целевой массив dst. Первый символ, который будет скопирован, по индексу srcBegin; последний знак, который будет скопирован, по индексу srcEnd-1 (таким образом общее количество символов, которые будут скопированы, srcEnd-srcBegin). Символы копируются в подмассив dst запуск по индексу dstBegin и окончание по индексу dstbegin+(srcEnd-srcBegin)-1.

Если dst null, тогда a NullPointerException бросается.

Иначе, если какое-либо следующее является истиной, IndexOutOfBoundsException бросается и место назначения не изменяется:

20.13.12 public StringBuffer append(Object obj)

Параметр преобразовывается в строку как будто методом String.valueOf (§20.12.38) и символы той строки тогда добавляются (§20.13.13) к этому StringBuffer объект. Ссылка на это StringBuffer объект возвращается.

20.13.13 public StringBuffer append(String str)

Символы String параметр добавляется, в порядке, к содержанию этого строкового буфера, увеличивая длину этого строкового буфера длиной параметра. Если str null, тогда эти четыре символа"null"добавляются к этому строковому буферу. Метод ensureCapacity (§20.13.7) сначала вызывают с этой новой строковой буферной длиной как ее параметр. Ссылка на это StringBuffer объект возвращается.

Позвольте n быть длиной старой символьной последовательности, тот, содержавшийся в строковом буфере только до выполнения append метод. Затем символ по индексу, k в новой символьной последовательности равен символу по индексу k в старой символьной последовательности, если k является меньше чем n; иначе, это равно символу по индексу k-n в параметре str.

20.13.14 public StringBuffer append(char[] str)
throws NullPointerException

Символы параметра массива добавляются, в порядке, к содержанию этого строкового буфера, увеличивая длину этого строкового буфера длиной параметра. Метод ensureCapacity (§20.13.7) сначала вызывают с этой новой строковой буферной длиной как ее параметр. Ссылка на это StringBuffer объект возвращается.

Полный эффект состоит точно в том, как будто параметр был преобразован в строку методом String.valueOf (§20.12.39) и символы той строки были тогда добавлены (§20.13.13) к этому StringBuffer объект.

20.13.15 public StringBuffer append(char[] str,
int offset, int len)
throws NullPointerException,
IndexOutOfBoundsException

Символы символьного массива str, запуск по индексу offset, добавляются, в порядке, к содержанию этого строкового буфера, увеличивая длину этого строкового буфера len. Метод ensureCapacity (§20.13.7) сначала вызывают с этой новой строковой буферной длиной как ее параметр. Ссылка на это StringBuffer объект возвращается.

Полный эффект состоит точно в том, как будто параметры были преобразованы в строку методом String.valueOf из трех параметров (§20.12.40) и символы той строки были тогда добавлены (§20.13.13) к этому StringBuffer объект.

20.13.16 public StringBuffer append(boolean b)

Параметр преобразовывается в строку как будто методом String.valueOf (§20.12.41) и символы той строки тогда добавляются (§20.13.13) к этому StringBuffer объект. Ссылка на это StringBuffer объект возвращается.

20.13.17 public StringBuffer append(char c)

Параметр добавляется к содержанию этого строкового буфера, увеличивая длину этого строкового буфера 1. Метод ensureCapacity (§20.13.7) сначала вызывают с этой новой строковой буферной длиной как ее параметр. Ссылка на это StringBuffer объект возвращается.

Полный эффект состоит точно в том, как будто параметр был преобразован в строку методом String.valueOf (§20.12.42) и символ в той строке были тогда добавлены (§20.13.13) к этому StringBuffer объект.

20.13.18 public StringBuffer append(int i)

Параметр преобразовывается в строку как будто методом String.valueOf (§20.12.43) и символы той строки тогда добавляются (§20.13.13) к этому StringBuffer объект. Ссылка на это StringBuffer объект возвращается.

20.13.19 public StringBuffer append(long l)

Параметр преобразовывается в строку как будто методом String.valueOf (§20.12.44) и символы той строки тогда добавляются (§20.13.13) к этому StringBuffer объект. Ссылка на это StringBuffer объект возвращается.

20.13.20 public StringBuffer append(float f)

Параметр преобразовывается в строку как будто методом String.valueOf (§20.12.45) и символы той строки тогда добавляются (§20.13.13) к этому StringBuffer объект. Ссылка на это StringBuffer объект возвращается.

20.13.21 public StringBuffer append(double d)

Параметр преобразовывается в строку как будто методом String.valueOf (§20.12.46) и символы той строки тогда добавляются (§20.13.13) к этому StringBuffer объект. Ссылка на это StringBuffer объект возвращается.

20.13.22 public StringBuffer insert(int offset, Object obj)
throws IndexOutOfBoundsException

Параметр преобразовывается в строку как будто методом String.valueOf (§20.12.38) и символы той строки тогда вставляются (§20.13.23) в это StringBuffer объект в позиции, обозначенной offset. Ссылка на это StringBuffer объект возвращается.

20.13.23 public StringBuffer insert(int offset, String str)
throws IndexOutOfBoundsException

Символы String параметр вставляется, в порядке, в строковый буфер в позиции, обозначенной offset, перемещение вверх любых символов первоначально выше той позиции и увеличения длины строки буферизует длиной параметра. Если str null, тогда эти четыре символа"null"вставляются в этот строковый буфер. Метод ensureCapacity (§20.13.7) сначала вызывают с этой новой строковой буферной длиной как ее параметр. Ссылка на это StringBuffer объект возвращается.

Символ по индексу k в новой символьной последовательности равен:

20.13.24 public StringBuffer insert(int offset, char[] str)
throws NullPointerException,
IndexOutOfBoundsException

Символы параметра массива, взятого в порядке, вставляются в этот строковый буфер, увеличивая длину строкового буфера длиной параметра. Метод ensureCapacity (§20.13.7) сначала вызывают с этой новой строковой буферной длиной как ее параметр. Ссылка на это StringBuffer объект возвращается.

Полный эффект состоит точно в том, как будто параметр был преобразован в строку методом String.valueOf (§20.12.39) и символы той строки были тогда вставлены (§20.13.23) в это StringBuffer объект в позиции, обозначенной offset.

Отметьте это в то время как StringBuffer класс обеспечивает append метод, который берет смещение, символьный массив, и два других параметра (§20.13.15), это в настоящий момент не обеспечивает insert метод, который берет смещение, символьный массив, и два других параметра.

20.13.25 public StringBuffer insert(int offset, boolean b)
throws IndexOutOfBoundsException

Параметр преобразовывается в строку как будто методом String.valueOf (§20.12.41) и символы той строки тогда вставляются (§20.13.23) в это StringBuffer объект в позиции, обозначенной offset. Ссылка на это StringBuffer объект возвращается.

20.13.26 public StringBuffer insert(int offset, char c)
throws IndexOutOfBoundsException

Параметр вставляется в содержание этого строкового буфера в позиции, обозначенной offset, увеличение длины этой строки буферизует 1. Метод ensureCapacity (§20.13.7) сначала вызывают с этой новой строковой буферной длиной как ее параметр. Ссылка на это StringBuffer объект возвращается.

Полный эффект состоит точно в том, как будто параметр был преобразован в строку методом String.valueOf (§20.12.42) и символ в той строке были тогда вставлены (§20.13.23) в это StringBuffer объект в позиции, обозначенной offset.

20.13.27 public StringBuffer insert(int offset, int i)
throws IndexOutOfBoundsException

Параметр преобразовывается в строку как будто методом String.valueOf (§20.12.43) и символы той строки тогда вставляются (§20.13.23) в это StringBuffer объект в позиции, обозначенной offset. Ссылка на это StringBuffer объект возвращается.

20.13.28 public StringBuffer insert(int offset, long l)
throws IndexOutOfBoundsException

Параметр преобразовывается в строку как будто методом String.valueOf (§20.12.44) и символы той строки вставляются (§20.13.23) в это StringBuffer объект в позиции, обозначенной offset. Ссылка на это StringBuffer объект возвращается.

20.13.29 public StringBuffer insert(int offset, float f)
throws IndexOutOfBoundsException

Параметр преобразовывается в строку как будто методом String.valueOf (§20.12.45) и символы той строки тогда вставляются (§20.13.23) в это StringBuffer объект в позиции, обозначенной offset. Ссылка на это StringBuffer объект возвращается.

20.13.30 public StringBuffer insert(int offset, double d)
throws IndexOutOfBoundsException

Параметр преобразовывается в строку как будто методом String.valueOf (§20.12.46) и символы той строки тогда вставляются (§20.13.23) в это StringBuffer объект в позиции, обозначенной offset. Ссылка на это StringBuffer объект возвращается.

20.13.31 public StringBuffer reverse()

Символьная последовательность содержится в этом StringBuffer объект заменяется реверсом той последовательности. Ссылка на это StringBuffer объект возвращается.

Позвольте n быть длиной старой символьной последовательности, тот, содержавшийся в строковом буфере только до выполнения reverse метод. Затем символ по индексу k в новой символьной последовательности равен символу по индексу n-k-1 в старой символьной последовательности.


Содержание | Предыдущий | Следующий | Индекс

Спецификация языка Java (HTML, сгенерированный Блинчиком "сюзет" Pelouch 24 февраля 1998)
Авторское право © Sun Microsystems, Inc 1996 года. Все права защищены
Пожалуйста, отправьте любые комментарии или исправления к doug.kramer@sun.com

free hit counter