Java
Урок 102 String
10 клас, Манько Н.М.
за методичними рекомендаціями С.М.Іщерякова
Пул
Пул рядків (String Pool) - це множина рядків в купі (Java Heap Memory).
Ми знаємо, що String - особливий клас в java, за допомогою якого ми можемо створювати рядкові об'єкти.
Приклад роботи з пулом
Коли ми використовуємо подвійні лапки, щоб створити новий рядок, то першим ділом йде пошук рядка з таким самим значенням в пулі рядків. Якщо java такий рядок знайшла, то повертає посилання, в іншому випадку створюється новий рядок в пулі, а потім повертається посилання.
Однак використання оператора new змушує клас String створити новий об'єкт String. Після цього можемо використовувати метод intern (), щоб помістити цей об'єкт в пул рядків або звернутися до іншого об'єкту з пулу рядків, який має таке ж значення.
Порівняння рядків
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
Задача
Задане ціле число.
Необхідно ввести з клавіатури дробове число. Користувач може між цілою і дробовою частиною числа поставити кому. Вам необхідно замість коми поставити крапку і перемножити ці два числа.
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(',', '.'); //замінити кому на крапку� } �
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);� � }
Методи, використані в задачі
=name.indexOf(",") | повертає позицію коми в слові name |
name=name.replace(',', '.') | заміна в слові name коми на крапку |
String strNumber= String.valueOf(intNumber); | перетворення числа в текст |
double number= Double.valueOf(doubleStr) | перетворення тексту на число |
String strOut= "*".concat(strNumber)+"="; | перетворення числа на текст |
Самостійна робота
Введіть з клавіатури довільний текст.
З’ясуйте позиції букви “а” та замініть її на букву “о”.
Взірець задачі 1
Взірець задач 2-4
Самостійна робота
Задача1. Поміняти букву “Р”на “Н”.
Задача2. Поміняти слово “РИк”на “гав”.
Задача3. Підрахувати кількість букв “М”.
Задача4. Підрахувати кількість слів “Мама”.
Задача5. Обернути слово і перевірити, чи воно паліндром.
Різниця між рядковими типами
Клас String є immutable.
Ви не будете змінювати об'єкт String, але можете замінити його створенням нового екземпляра. Створення нового примірника обходиться дорого.
Домашнє завдання