Материал: 4 - Полиморфизм

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Java cтрока представляет из себя строку литералов (текст), помещенных в двойные кавычки, например: "Hello , World! ”

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

Оператор '+' является перегруженным, для объектов типа String, и всегда используется, чтобы объединить две строки операндов. В данном контексте мы говорим об операции конкатенации или сложения строк (хотя '+' не работает как оператор сложения для любых других объектов, кроме строк, например, таких как Point и Circle).

Особенности использования строк в Java

Есть два способа создания строк:

неявное создание путем присвоения строкового литерала переменной

явное создание объекта String, через вызов оператора new и вызов конструктора.

String s1строка=литералов"Hello";

 

//

String s3 =

String s2строка=литералов"Hello";

//

//

s1; одинаковыессылки

// String

 

String

s4

=объектnew String("Hello");

 

String

s5

=объектnew String("Hello");

// String

 

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

памяти. Объекты строк, выделенные с помощью оператора new хранятся в куче (heap), а там нет разделяемого хранилища для одинакового контента (содержания).

Кратко о классе String

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

Обратитесь к API JDK для того чтобы ознакомиться с полным списком возможностей класса String в java.lang.String.

Методы класса String

//длина

String

int length() возвращаетдлину//

boolean isEmpty() // то же самое thisString.length == 0 //сравнение

boolean equals(String another)НЕЛЬЗЯ//использовать'=='или'!='

длясравненияобъектов

String в

Java

boolean equalsIgnoreCase(String

another)

int compareTo(Stringвозвращаетеслиэта0 строка another)

//

совпадаетanother;

 

another; or >0

//еслилексикографически<0 меньше

 

int compareToIgnoreCase(String another) boolean startsWith(String another)

boolean startsWith(String another, int fromIndex) //поискначинается fromIndex

Классы StringBuffer и StringBuilder

JDK предоставляет два класса для поддержки возможностей по изменению строк: это классы StringBuffer и StringBuilder (входят в основной пакет java.lang ).

StringBuffer используется для многопоточных программ StringBuilder для для однопоточных

Методы StringBuffer.

java.lang.StringBuffer. //Методы класса:

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

StringBuffer() // инициализация пустой строкой StringBuffer(int size)// определяет размер при инициализации StringBuffer(Stringинициализируетясодержимымs s) //

int length()длинастроки// //Методыдляконструисодержимогоования

StringBuffer append(type arg) /*типможетбытьпримитивным, char[], String, StringBuffer, т.д.*/ //Методыдляманипуляцсодержимыми

StringBuffer delete(int start, int end) StringBuffer deleteCharAt(int index) void setLength(int newSize)

void setCharAt(int index, char newChar) StringBuffer replace(int start, int end, String s) StringBuffer reverse()

//Методыдлявыделенияцелого/частисодержимого char charAt(int index)

String substring(int start)

String substring(int start, int end) String toString()

//тодыдляMeпоиска

int indexOf(String searchKey)

int indexOf(String searchKey, int fromIndex) int lastIndexOf(String searchKey)

int lastIndexOf(String searchKey, int fromIndex)

Обратите внимание, что объект класса StringBuffer является обычным объектом в прямом понимании этого слова. Вам нужно будет использовать конструктор для создания объектов типа класс StringBuffer (вместо инициализации строки). Кроме того, оператор '+' не применяется к объектам, в том числе и к объектам StringBuffer . Вы должны будете использовать такой метод, как append() или insert() чтобы манипулировать StringBuffer .

Пример создания строки из частей

//СоздадимстрокутипаYYYY

-MM-DD

HH:MM:SS

int year = 2010, month = 10, day =

10;

int hour = 10, minute = 10, second

= 10;

String dateStr = new StringBuilder().append(year).append("- ").append(month).append("").append(day).append("").append(hour)

.apend(":").append(minute).append(":").append(second).toString(); System.out.println(dateStr);

// StringBuilder более эффективный конкатенация String

String anotherDataStr = year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second; System.out.println(anotherDataStr);

Почему стоит использовать StringBuffer и StringBuilder

Объекты StringBuffer или StringBuilder так же, как и любые другие обычные объект хранятся в куче, а не совместно в общем пуле строк.

Следовательно, могут быть изменены, не вызывая нехороших побочных эффектов на другие объекты.

Продолжение GUI

Графический интерфейс пользователя (GUI) в Java создается с помощью по меньшей мере трех типов объектов:

компоненты

события

слушатели событий

Мы ранее обсуждали компоненты, которые являются объектами, которые представляют элементы экрана

Надписи (labels), кнопки (buttons), текстовые поля (text fields), меню и т.д.

Некоторые компоненты контейнеров, которые содержат и позволяют организовывать другие компоненты

Фреймы (frames), панели (panels), диалоги и т.д.

Событие представляет собой объект, который представляет собой некоторую активность, на которою мы можем ответить некоторым образом

Например, мы можем захотеть нашу программу, чтобы выполнить какое-либо действие, когда происходит следующее:

Движение мыши

Перетаскивание мышью

Нажатие кнопки мыши (лев или прав)

Нажатие кнопки GUI

Нажатие клавиши клавиатуры

Истечение времени по таймеру

События часто соответствуют действия пользователя, но не всегда

Обработка событий в Java

События и слушатели

Стандартная библиотека классов Java содержит несколько классов, которые представляют собой типичные события. Компоненты, такие как кнопки, генерируют событие, когда оно происходит. Объект слушателя "ждет” события, которое должно произойти и реагирует соответствующим образом. Мы можем конструировать объекты слушателя и принимать любые действия, которые уместны при возникновении события.

Источник: https://studfile.net/preview/16403758/