Програмування на мові Java Робота з рядками

March 4th, 2009


« Програмування на мові Java Мережеві засоби   |   Програмування на мові Java Типи »

В Java цікаве те, що для кожного рядка-літерала створюється свій представник класу String, так що ви можете викликати методи цього класу безпосередньо з рядками-літералами, а не тільки з посилальними змінними. Черговий приклад також виводить число 3.

System.out.println(”abc”.Length());

Злиття рядків

Рядок String s = <Не is > + age + ” years old.”; в якій за допомогою оператора + три рядки об’єднуються в одну, прочитати і зрозуміти безумовно легше, ніж її еквівалент, записаний з явними викликами тих самих методів, які неявно були використані в першому прикладі:

String s = new StringBuffer(”He is “).append(age);
s.append(” years old.”).toString();

За визначенням кожен об’єкт класу String не може змінюватися. Не можна ні вставити нові символи у вже існуючий рядок, ні поміняти в ній одні символи на інші. І додати один рядок в кінець іншій теж не можна. Тому транслятор Java перетворить операції, що виглядають, як модифікація об’єктів String, в операції із спорідненим класом StringBuffer.

Зауваження
Все це може здатися вам необгрунтовано складним. А чому не можна обійтися одним класом String, дозволивши йому поводитися приблизно так само, як StringBuffer? Вся справа в продуктивності. Той факт, що об’єкти типа String в Java незмінні, дозволяє транслятору застосовувати до операцій з ними різні способи оптимізації.

Послідовність виконання операторів

Давайте ще раз звернемося до нашого останнього прикладу:

String s = “Не is ” + age + ” years old.”;

У тому випадку, коли age-не String, а змінна, скажімо, типу int, в цьому рядку коду поміщено ще більше магії транслятора. Ціле значення змінної int передається суміщеному методу append класу StringBuffer, який перетворить його в текстовий вигляд і додає в кінець рядка, що міститься в об’єкті.


Tags: , , , , , ,

програмування


Схожі записи

Категория: програмування |

Комментарии