- •К экзамену
- •1 Семестр
- •1.Общая характеристика Java
- •2. Жизненный цикл программы Java
- •3. Лексические основы Java
- •4. Операции в Java
- •5. Примитивные типы данных
- •6. Булевские переменные и булевская алгебра
- •7. Условный оператор
- •9. Оператор Break
- •10. Оператор Switch
- •11. Цикл While
- •12. Цикл Do
- •13. Цикл For
- •14. Одномерные массивы
- •15. Многомерные массивы
- •16. Введение в строки
- •Преимущества:
- •Недостатки:
- •Преимущества:
- •Недостатки:
- •17. Основные конструкторы класса String
- •Работа со строками (класс String)
- •21. Класс StringBuffer
- •22. Методы StringBuffer
- •23. Класс StringTokenizer и его методы
- •24. Общие понятия об ооп
- •28. Определение классов и методов
- •29. Модификаторы доступа
- •30. Описание методов
- •38. Статические переменные
- •39. Перегрузка метода
- •40. Рекурсивные методы
- •41. Конструкторы
- •42. Инициализаторы
- •43. Реализация наследования в Java
- •44. Производные методы
- •Замечание
- •Типы исключений
- •2. Блоки try-catch-throw
- •Несколько разделов catch
- •Вложенные операторы try
- •Throw ОбъектТипаThrowable;
- •3. Иерархия классов исключительных ситуаций
- •4. Базовые классы исключений и их методы
- •5. Проверяемые и непроверяемые исключения
- •6. Создание собственных классов исключений
- •7. Типы коллекций в Java
- •8. Класс ArrayList, конструкторы, основные методы
- •9. Класс LinkedList и его методы
- •10. Общая характеристика потоков Java
- •Создание потоков
- •Запуск и остановка
- •Приостановка и возобновление
- •11. Иерархия типов в java.Io
- •12. Класс InputStream и его методы
- •19. Класс File
- •Класс DataInputStream (производный от InputStream)
- •Класс DataOutputStream (производный от OutputStream)
- •Классы BufferedInputStream и BufferedOutputStream
- •Класс RandomAccessFile
- •Классы InputStreamReader и OutputStreamWriter (производные от Reader и Writer)
- •Классы FileReader и FileWriter
- •Зачем сериализация нужна?
- •Как сериализовать объект?
- •Формат сериализованного объекта
- •Алгоритм сериализации Java
- •21. Форматирование данных при выводе Методы printf и format
- •22. Класс Scanner, конструкторы, основные методы
- •23. Архитектура mvc (Model/View/Controller) Архитектура Model-View-Controller (mvc)
- •Еще Java фреймвоки
- •24. Gui общее понятия, принципы реализации в Java
- •25. Событийная модель Java
21. Класс StringBuffer
Если бы класс String, который представляет объекты строк, не допускающих изменения, был единственным доступным средством, в процессе обработки строковых данных для хранения промежуточных результатов нам пришлось бы создавать новые объекты String. В качестве примера рассмотрим последовательность действий компилятора при вычислении следующего выражения:
public static String guillemete(string quote) {
return ‘«’ + quote + ‘»’;
}
Если бы компилятор был ограничен возможностью использования только тех объектов, которые относятся к классу String, выполняемые им операции можно было бы описать такой схемой:
quoted = String.valueOf(‘«’).concat(quote)
.concat(string.valueOf(‘»’));
При Каждом вызове valueOf и concat создается новый объект String, так что в Процессе вычисления рассматриваемого выражения системе пришлось бы построить четыре объекта String, только один из которых пригодился бы в дальнейшем, и понести при этом неоправданно большие накладные расходы, связанные с созданием, инициализацией и утилизацией дополнительных объектов.
На самом деле, однако, компилятор действует более эффективно. В процессе вычислений промежуточных результатов он использует объект класса StringBuffer и создает объект String только в том случае, когда это действительно необходимо. Объекты StringBuffer допускают изменение содержимого, поэтому создавать новые объекты для хранения промежуточных результатов вычислений не требуется. Вычисляя выражение с помощью средств класса StringBuffer, компилятор выполняет следующие операции:
quoted= new StringBuffer().append(‘«’) appendCquote).append(‘»’).toString();
В процессе вычисления выражения компилятор создает единственный объект StringBuffer для хранения всей последовательности символов, инициализирует его посредством нескольких функций append, а затем с помощью метода tostring преобразует Окончательный результат в объект типа String.
Для построения и изменения строк вы вправе воспользоваться средствами Класса StringBuffer непосредственно. В его составе есть несколько конструкторов, описанных ниже.
public StringBuffer()
Создает новый объект StringBuffer со значением "" – пустую строку.
public StringBuffer(String str)
Создает новый объект StringBuffer, содержащий ту же строку, что и объект-параметр stг.
Класс StringBuffer во многом подобен Классу String он поддерживает ряд одноименных методов с теми же контрактами. Однако StringBuffer не является производным от String, поэтому обратное предположение также неверно. Эти классы совершенно независимы – они оба наследуют класс Object.
22. Методы StringBuffer
23. Класс StringTokenizer и его методы
Определение этого класса достаточно компактно.
Конструкторы
public StringTokenizer(String str);
public StringTokenizer(String str,
String delim);
public StringTokenizer(String str,
String delim,
boolean returnTokens);
Методы
public String nextToken();
public String nextToken
(String delim);
public int countTokenss();
public boolean hasMoreElements();
public boolean hasMoreTokenss();
public Object nextElement();
}
Класс StringTokenizer не имеет никакого отношения к потокам, так как предназначен для выделения отдельных элементов из строк типа String.
Конструкторы класса получают в качетсве первого параметра str ссылку на разбираемую строку. Второй параметр delim, если он есть, задает разделители, с испльзованием которых в строке будут выделяться элементы. Параметр returnTokens определяет, надо ли вовзвращать обнаруженные разделители как элементы разбираемой строки.
Рассмотрим кратко методы класса StringTokenizer.
Для разбора строки приложение должно организовать цикл, вызывая в нем метод nextToken. Условием завершения цикла может быть либо возникновение исключения NoSuchElementException, либо возврат значения false методами hasMoreElements или hasMoreTokens.
Метод countTokens позволяет определить, сколько раз был вызван метод nextToken перед возникновением исключения NoSuchElementException.