Page 37 - 4657
P. 37

У  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.";



                                                                             35
   32   33   34   35   36   37   38   39   40   41   42