Главная » Java » Именованные константы Java

0

 

 

Константы  (constants) – это значения вида 12, 17.9 или "строка, подобная этой". Константы – или, каких еще называют, литералы (literals) предлагают удобный способ задания значений, которые не нуждаются в    первоначальных и повторных вычислениях и, по определению, остаются неизменными на протяжении всего сеанса

работы программы.

В примере Fibonacci, мы выводили на экран фрагмент возрастающей последовательности значений, не превышающих 50. Константа 50 была использована :IIУТРИ логического условия цикла whil е и комментария документирования, описывающего метод main. Теперь предположим, что текст программы следует "заменить таким образом, чтобы она отображала все числа Фибоначчи, меньшие 100. Вам придется последовательно просмотреть код с целью обнаружения и исправления всех экземпляров константы 50. Согласны, в данном примере сделать ЭТО несложно, но в общем случае подобный процесс заведомо трудоемок и чреват ошибками. Кроме того, читателю, встречающему в тексте программы выражение, схожее с hi < 50, подчас бывает трудно понять его истинный смысл. Подобные числа (о них в шутку говорят как о "магических") серьезным образом сужают возможности восприятия кода и его дальнейшего развития.

Именованная константа (named constant) – это постоянное значение, на которое можно сослаться по имени. Например, в программе Fibonacci верхнюю границу выводимых значений уместно обозначить идентификатором МАХ. Если говорить о синтаксисе, именованная константа объявляется в виде поля соответствующего типа, инициализированного требуемым значением. Такое выражение само по себе еще не будет именованной константой – это всего лишь обычное поле, значение которого задано с помощью оператора присваивания. Чтобы снабдить значение признаком "постоянства", в объявлении поля надлежит употребить модификатор final. Поле или переменная, обозначенные служебным словом final, будучи инициализированными один раз, далее не способны к изменению исходных значений – они приобретают свойство устойчивости. Кроме того, поскольку именованную константу не имеет смысла различать в составе отдельных экземпляров одного и того же класса, в ее объявлении употребляют модификатор statiс.

Теперь пример программы Fibonacci легко переписать следующим образом:

 

 

 

 

class Fibonacci2 {

                        static final int MAX = 50;

                        /** Вывод на экран последовательности

                         * чисел Фибоначчи, меньших MAX */

                         

                        public static void main(String[] args){

                                   int lo = 1;

                                   int hi = 1;

                                   System.out.println(lo);

                                   while(hi<MAX){

                                               System.out.println(hi);

                                               hi = lo + hi;                             

                                               lo = hi – lo;                              

                                   }

                        }

           

            }

 

Группу взаимосвязанных по смыслу констант удобно разместить в объявлении специального класса. Так, например, в программной реализации карточной игры может применяться следующий класс:

 

class Suit { // Масть

      final static int CLUBS    = 1; // трефы

      final static int DIAMONDS = 2; // бубны

      final static int HEARTS   = 3; // черви

      final static int SPADES   = 4; // пики

}

 

Для ссылки на статический член класса используется название класса, Сопровождаемое символом точки и именем члена. В контексте приведенного примера значения карточных мастей далее могут быть адресованы как Suit. HEARTS

Упражнение 1.5. Исправьте текст программы HelloWorld таким образом, чтобы на экран выводилось содержимое именованной строковой константы

Упражнение 1.6. Измените программный код упражнения 1.3, предусмотрев использование в качестве заголовка последовательности чисел Фибоначчи именованной строковой константы.

 

Источник: Арнолд, Кен, Гослинг, Джеймс, Холмс, Дэвид. Язык программирования Java. 3-е изд .. : Пер. с англ. – М. : Издательский дом «Вильяме», 2001. – 624 с. : ил. – Парал. тит. англ.

По теме:

  • Комментарии