1 of 15

Java

Урок 102 String

10 клас, Манько Н.М.

за методичними рекомендаціями С.М.Іщерякова

2 of 15

Пул

Пул рядків (String Pool) - це множина рядків в купі (Java Heap Memory).

Ми знаємо, що String - особливий клас в java, за допомогою якого ми можемо створювати рядкові об'єкти.

3 of 15

4 of 15

Приклад роботи з пулом

Коли ми використовуємо подвійні лапки, щоб створити новий рядок, то першим ділом йде пошук рядка з таким самим значенням в пулі рядків. Якщо java такий рядок знайшла, то повертає посилання, в іншому випадку створюється новий рядок в пулі, а потім повертається посилання.

Однак використання оператора new змушує клас String створити новий об'єкт String. Після цього можемо використовувати метод intern (), щоб помістити цей об'єкт в пул рядків або звернутися до іншого об'єкту з пулу рядків, який має таке ж значення.

5 of 15

Порівняння рядків

public class StringPool {

public static void main(String[] args) {

String s1 = "Cat";

String s2 = "Cat";

String s3 = new String("Cat");

// порівняння рядків

System.out.println("s1 == s2 : " + ( s1 == s2 ) );

System.out.println("s1 == s3 : " + ( s1 == s3 ) );

}

}

s1 == s2 : true

s1 == s3 : false

6 of 15

Задача

Задане ціле число.

Необхідно ввести з клавіатури дробове число. Користувач може між цілою і дробовою частиною числа поставити кому. Вам необхідно замість коми поставити крапку і перемножити ці два числа.

7 of 15

public static void main ( String[] args ){int intNumber=36; � System.out.print("Введіть число: ");� Scanner in = new Scanner(System.in);� String doubleStr=in.next();� System.out.println("Ви ввели: "+doubleStr); //Ціла і дробова частина повинна бути через крапку//шукаємо чи не ввели через комуint index=doubleStr.indexOf(",");if (index>=0) {� System.out.println("Кома у позиції: "+index); � doubleStr=doubleStr.replace(',', '.'); //замінити кому на крапку }

8 of 15

https://uk.wikibooks.org/wiki/%D0%9E%D1%81%D0%B2%D0%BE%D1%8E%D1%94%D0%BC%D0%BE_Java/%D0%A0%D1%8F%D0%B4%D0%BA%D0%B8

//Перетворюємо int число у рядок тексту� String strNumber=String.valueOf(intNumber);//Приєднуємо число до рядка через метод concat (хоча можна і оператором "+")� String strOut="*".concat(strNumber)+"=";//Перетворюємо введений рядок тексту у числоdouble number=Double.valueOf(doubleStr);� number =number*intNumber; //множимо введене число на 36 System.out.println(doubleStr+strOut+number);� � }

9 of 15

Методи, використані в задачі

=name.indexOf(",")

повертає позицію коми в слові name

name=name.replace(',', '.')

заміна в слові name коми на крапку

String strNumber= String.valueOf(intNumber);

перетворення числа в текст

double number=

Double.valueOf(doubleStr)

перетворення тексту на число

String strOut=

"*".concat(strNumber)+"=";

перетворення числа на текст

10 of 15

Самостійна робота

Введіть з клавіатури довільний текст.

З’ясуйте позиції букви “а” та замініть її на букву “о”.

11 of 15

Взірець задачі 1

12 of 15

Взірець задач 2-4

13 of 15

Самостійна робота

Задача1. Поміняти букву “Р”на “Н”.

Задача2. Поміняти слово “РИк”на “гав”.

Задача3. Підрахувати кількість букв “М”.

Задача4. Підрахувати кількість слів “Мама”.

Задача5. Обернути слово і перевірити, чи воно паліндром.

14 of 15

Різниця між рядковими типами

Клас String є immutable.

Ви не будете змінювати об'єкт String, але можете замінити його створенням нового екземпляра. Створення нового примірника обходиться дорого.

Детальніше

15 of 15

Домашнє завдання

  1. Подвоїти кожну букву слова і вставити після них тире.
  2. Закодувати слово таким чином, щоб у новому слові після першої букви йшла остання, після другої- передостання і т.д. (школа-шакло, урок - укро, Джава-Дажва).