русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Класс StringBuffer


Дата добавления: 2015-07-09; просмотров: 561; Нарушение авторских прав


Класс StringBuffer является “близнецом” класса String, но, в отличие от последнего, содержимое и размеры объектов класса StringBuffer можно изменять. Объекты классов StringBuffer и String можно преобразовывать друг в друга. Конструктор класса StringBuffer может принимать в качестве параметра объект String и целочисленный (неотрицательный) размер буфера. Объекты этого класса можно преобразовать в объект класса String методом toString() или с помощью конструктора класса String. Следует обратить внимание на следующие методы класса:

setLength(int n) – установка размера содержимого буфера;

ensureCapacity(int minimum) – установка гарантированного

минимального размера буфера объекта;

capacity() – определение размера буфера объекта;

append(параметры) – добавление символов, значений базовых типов, массивов и строк;

insert(параметры) – вставка символа, объекта или строки в указанную позицию;

deleteCharAt(int index) – удаление символа;

delete(int start, int end) – удаление подстроки;

reverse() – обращение содержимого объекта.

В классе присутствуют также методы, аналогичные методам класса String, такие как replace(), substring(), charAt(), length(), getChars(), indexOf() и др.

 

/* пример # 6 : свойства объекта StringBuffer :

DemoStringBuffer.java */

public class DemoStringBuffer {

public static void main(String[] args) {

StringBuffer sb = new StringBuffer();

System.out.println("длина ->" + sb.length());

System.out.println("размер ->" + sb.capacity());



//sb = "Java";//ошибка, только для класса String

sb.append("Java");

System.out.println("строка ->" + sb);

System.out.println("длина ->" + sb.length());

System.out.println("размер ->" + sb.capacity());



System.out.println("реверс ->" + sb.reverse());

}

}

 

Результатом выполнения данного кода будет:

 

длина ->0

размер ->16

строка ->Java

длина ->4

размер ->16

реверс ->avaJ

 

При создании объекта StringBuffer автоматически резервируется некоторый объем памяти, что в дальнейшем позволяет быстро менять содержимое объекта, оставаясь в границах участка памяти, выделенного под объект. Размер резервируемой памяти при необходимости можно указывать в конструкторе. Если длина строки StringBuffer после изменения превышает его размер, то емкость объекта автоматически увеличивается, оставляя при этом резерв для дальнейших изменений. С помощью метода reverse() можно быстро изменить порядок символов в объекте.

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

/* пример # 7 : изменение объекта StringBuffer :

RefStringBuffer.java */

public class RefStringBuffer {

static void changeStr(StringBuffer s) {

s.append(" Microsystems");

}

public static void main(String[] args) {

StringBuffer str =

new StringBuffer("Sun");

changeStr(str);

System.out.println(str);

}

}

 

В результате выполнения этого кода будет выведена строка:

 

Sun Microsystems

 

Объект StringBuffer передан в метод changeStr() по ссылке, поэтому все изменения объекта сохраняются и для вызывающего метода. Для класса StringBuffer не переопределены методы equals() и hashCode(), т.е. сравнить содержимое двух объектов невозможно, к тому же хэш-коды всех объектов этого типа вычисляются так же, как и для

класса Object.

 

/* пример # 8 : сравнение объектов StringBuffer и их

хэш-кодов : EqualsStringBuffer.java */

public class EqualsStringBuffer {

public static void main(String[] args) {

StringBuffer sb1 =

new StringBuffer("Sun");

StringBuffer sb2 =

new StringBuffer("Sun");

System.out.print(sb1.equals(sb2));

System.out.print(

sb1.hashCode() == sb2.hashCode());

}

}

 

Результатом выполнения данной программы будет дважды выведенное значение false.



<== предыдущая лекция | следующая лекция ==>
Класс String | по дисциплине «Микропроцессорные системы энергообъектов»


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 2.979 сек.