Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Модификация строк при копировании



Поскольку объекты класса String нельзя изменять, всякий раз, когда вам захочется модифицировать строку, придется либо копировать ее в объект типа StringBuffer, либо использовать один из описываемых ниже методов класса String, которые создают новую копию строки, внося в нее ваши изменения.

 

substring

Вы можете извлечь подстроку из объекта String, используя метод sub­string. Этот метод создает новую копию символов из того диапазона ин­дексов оригинальной строки, который вы указали при вызове. Можно указать только индекс первого символа нужной подстроки — тогда будут скопированы все символы, начиная с указанного и до конца строки. Также можно указать и начальный, и конечный индексы — при этом в новую строку будут скопированы все символы, начиная с первого ука­занного, и до (но не включая его) символа, заданного конечным индек­сом.

" Hello World".substring(6) -> " World"

" Hello World".substring(3, 8) -> " lo Wo"

 

concat

Слияние, или конкатенация строк выполняется с помощью метода concat. Этот метод создает новый объект String, копируя в него содер­жимое исходной строки и добавляя в ее конец строку, указанную в параметре метода.

" Hello".concat(" World" ) -> " Hello World"

 

replace

Методу replace в качестве параметров задаются два символа. Все сим­волы, совпадающие с первым, заменяются в новой копии строки на вто­рой символ.

" Hello".replace('l', 'w') -> " Hewwo"

 

toLowerCase и toUpperCase

Эта пара методов преобразует все символы исходной строки в нижний и верхний регистр, соответственно.

" Hello".toLowerCase() -> " hello"

" Hello".toUpperCase() -> " HELLO"

 

trim

И, наконец, метод trim убирает из исходной строки все ведущие и замыкающие пробелы.

“Hello World “.trirn() -> " Hello World"

 

valueOf

Если вы имеете дело с каким-либо типом данных и хотите вывести значение этого типа в удобочитаемом виде, сначала придется преобразо­вать это значение в текстовую строку. Для этого существует метод val­ueOf. Такой статический метод определен для любого существующего в Java типа данных (все эти методы совмещены, то есть используют одно и то же имя). Благодаря этому не составляет труда преобразовать в стро­ку значение любого типа.

 

StringBuffer

StringBuffer — близнец класса String, предоставляющий многое из того, что обычно требуется при работе со строками. Объекты класса String представляют собой строки фиксированной длины, которые нельзя изме­нять. Объекты типа StringBuffer представляют собой последовательности символов, которые могут расширяться и модифицироваться. Java активно ис­пользует оба класса, но многие программисты предпочитают работать только с объектами типа String, используя оператор +. При этом Java вы­полняет всю необходимую работу со StringBuffer за сценой.

 

Конструкторы

Объект StringBuffer можно создать без параметров, при этом в нем будет зарезервировано место для размещения 16 символов без возмож­ности изменения длины строки. Вы также можете передать конструкто­ру целое число, для того чтобы явно задать требуемый размер буфера. И, наконец, вы можете передать конструктору строку, при этом она будет скопирована в объект и дополнительно к этому в нем будет заре­зервировано место еще для 16 символов. Текущую длину StringBuffer можно определить, вызвав метод length, а для определения всего места, зарезервированного под строку в объекте StringBuffer нужно воспользоваться методом capacity. Ниже приведен пример, поясняющий это:

 

class StringBufferDemo {

public static void main(String args[]) {

StringBuffer sb = new StringBuffer(" Hello" );

System.out.println(" buffer = " + sb);

System.out.println(" length = " + sb.length());

System.out. println(" capacity = " + sb.capacity());

} }

 

Вот вывод этой программы, из которого видно, что в объекте String-Buffer для манипуляций со строкой зарезервировано дополнительное место.

С: \> java StringBufferDemo

buffer = Hello

length = 5

capacity = 21

 

ensureCapacity

Если вы после создания объекта StringBuffer захотите зарезервировать в нем место для определенного количества символов, вы можете для установки размера буфера воспользоваться методом ensureCapacity. Это бывает полезно, когда вы заранее знаете, что вам придется добавлять к буферу много небольших строк.

 

setLength

Если вам вдруг понадобится в явном виде установить длину строки в буфере, воспользуйтесь методом setLength. Если вы зададите значение, большее чем длина содержащейся в объекте строки, этот метод заполнит конец новой, расширенной строки символами с кодом нуль. В приводимой чуть дальше программе setCharDemo метод sstLength используется для укорачивания буфера.

 

charAt и setCharAt

Одиночный символ может быть извлечен из объекта StringBuffer с помощью метода charAt. Другой метод setCharAt позволяет записать в заданную позицию строки нужный символ. Использование обоих этих методов проиллюстрировано в примере:

 

class setCharAtDemo {

public static void main(String args[]) {

StringBuffer sb = new StringBuffer(" Hello" );

System.out.println(" buffer before = " + sb);

System.out.println(" charAt(1) before = " + sb.charAt(1));

sb.setCharAt(1, 'i');

sb.setLength(2);

System.out.println(" buffer after = " + sb);

System.out.println(" charAt(1) after = " + sb.charAt(1));

} }

 

Вот вывод, полученный при запуске этой программы.

C: \> java setCharAtDemo

buffer before = Hello

charAt(1) before = e

buffer after = Hi

charAt(1) after = i

 

append

Метод append класса StringBuffer обычно вызывается неявно при ис­пользовании оператора + в выражениях со строками. Для каждого параметра вызывается метод String.valueOf и его результат до­бавляется к текущему объекту StringBuffer. К тому же при каждом вы­зове метод append возвращает ссылку на объект StringBuffer, с которым он был вызван. Это позволяет выстраивать в цепочку последовательные вызовы метода, как это показано в очередном примере.

 

class appendDemo {

public static void main(String args[]) {

String s;

int a = 42;

StringBuffer sb = new StringBuffer(40);

s = sb.append(" a = " ).append(a).append("! " ).toString();

System.out.println(s);

} }

 

Вот вывод этого примера:

С: \> Java appendDemo

а = 42!

 

insert

Метод insert идентичен методу append в том смысле, что для каждого возможного типа данных существует своя совмещенная версия этого ме­тода. Правда, в отличие от append, он не добавляет символы, возвра­щаемые методом String.valueOf, в конец объекта StringBuffer, а встав­ляет их в определенное место в буфере, задаваемое первым его параметром. В очередном нашем примере строка " there" вставляется между " hello" и " world! ".

 

class insertDemo {

public static void main(String args[]) {

StringBuffer sb = new StringBuffer(" hello world! " );

sb.insert(6, " there " );

System.out.println(sb);

} }

При запуске эта программа выводит следующую строку:

С: \> java insertDemo

hello there world!

 



БИЛЕТ №17

Области применения ООП

 

1.Приложений для работы с различными системами управления базами данных. Например СУБД Microsoft Access использует встроенный объектно-ориентированный язык программирования Visual Basic for Applications, родоначальником которого является структурный язык Basic.

2.Создание развлекательных приложений игрового характера с элементами 3D графики. Примером может служить язык OpenGL который включает 250 функций для рисования сложных трёхмерных сцен из простых примитивов и используется при создании компьютерных игр, САПР, виртуальной реальности, визуализации в научных исследованиях. На платформе Windows конкурирует с Direct 3D.

3.Современные объектно-ориентированные среды программирования используют как встроенные библиотечные модули, так и позволяют подключать модули разработанные для использования в данной среде. Подключаемые объекты можно разработать на основе шаблонных модулей.

 

Областями применения ООП в программной инженерии являются создание различных приложений как WEB, так и для работы в различных операционных системах (семейств Windows, Linux и др.):

 

 

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

- ясное представление об архитектуре создаваемой системы;

- хорошо организованный итеративно развивающийся процесс работы над проектом.

БИЛЕТ №18

Коллекции Java

Об интерфейсах, реализуемых коллекциями. Есть 3 базовых интерфейса:

· Set — множество уникальных элементов;

· List — упорядоченный массив элементов;

· Map — ассоциативный массив вида ключ=> значение, где ключ и значение могут быть объектами любого класса. Ключи в списке должны быть уникальными.

Эти интерфейсы реализованы множеством классов.

.

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

Массив можно объявить двумя способами:

  • с определенной размерностью, фиксированной на весь срок службы массива;

· с определенным набором начальных значений. Размерность этого множества определяет размер массива – он будет в точности таким, чтобы вместить все эти значения, и его размер будет оставаться неизменным в течение всего срока службы массива.

 

Объявление массива

В общем случае массив объявляется так:

new elementType [arraySize]

 

Существует два способа создания массива целочисленных элементов. Этот оператор создает пустой массив на пять элементов:

// создает пустой массив на 5 элементов: int[] integers = new int[5];

 

Этот оператор создает массив и сразу все инициализирует:

// создает массив из 5 элементов со значениями: int[] integers = new int[] { 1, 2, 3, 4, 5 };

 

Начальные значения заключены в фигурные скобки и разделяются запятыми.

 


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-07-14; Просмотров: 581; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.041 с.)
Главная | Случайная страница | Обратная связь