45
например: “0.00” будет отображать две цифры после запятой. Вы можете изменить
шаблон (pattern) с помощью:
applyPattern(pattern)
Для форматирования чисел используется метод
format()
. Например:
System.out.println(formatter.format(15.026));
2.6 Перечисляемые типы
Java позволяет определить перечисляемый тип, который затем можно
использовать для объявления переменных. Определение перечисляемого типа задает
все возможные значения, которые может принимать переменная этого типа.
Следующее объявление создает перечисляемый тип, который называется Season.
enum Season {WINTER, SPRING, SUMMER, FALL};
В перечислении может быть любое количество значений. Представляет собой
список именованных констант, и определяет новый тип данных.
Для создания
перечисления служит ключевое слово enum.
Объект перечислимого типа может принимать лишь значения, содержащиеся в
списке. Перечисления удобно использовать, когда требуется определить ряд
значений, обозначающих совокупность элементов. Например, с помощью
перечисления можно представить набор кодов состояния (успешное
завершение,
ошибка, необходимость повторной попытки).
Пример перечисления видов транспортных средств:
enum Transport {
CAR, TRUCK, AIRPLANE, TRAIN, BOAT
}
Идентификаторы
CAR
,
TRUCK
и так далее называются константами
перечислимого типа. Каждый из них автоматически неявно объявляется как
открытый (public), статический (static) член перечисления
Transport
.
Тип этих констант соответствует типу перечисления (в данном случае —
Transport
).
В
терминологии
Java
подобные
константы
называются
46
самотипизированными (приставка “само” означает, что в
качестве типа константы
принимается тип перечисления).
После того, как тип определен, переменная этого типа может быть объявлена
Season time;
а потом ей можно присвоить значение
time = Season.FALL;
Значения указываются через имя типа. Перечисляемые типы являются
безопасными типами - вы не можете присвоить им любое значение, кроме тех,
которые уже перечислены. Определив перечисление,
можно создать переменную
данного типа. Но несмотря на то, что перечисление определяется как тип класса,
получить экземпляр объекта типа enum с помощью оператора new нельзя.
Переменная перечислимого типа создается подобно переменной простого типа.
Например, для объявления переменной tp упомянутого выше перечислимого типа
Transport
служит следующее выражение:
Transport tp;
Переменная tp относится к типу Transport, и поэтому ей
можно присваивать
только те значения, которые определены в данном перечислении. Например, в
следующей строке кода переменной tp присваивается значение
AIRPLANE
:
tp = Transport.AIRPLANE;
Для проверки равенства констант перечислимого типа служит оператор
сравнения =. Например:
if(tp == Transport.TRAIN) // ...
Также можно использовать
switch()
.
Применение перечисления для
управления оператором switch:
switch(tp) {
case CAR:
// ...
case TRUCK:
// ...
Порядковые значения
Внутри перечисления каждое значение перечисляемого типа хранится как
целое число, называемое его порядковое значение. Первое значение перечисляемого
47
типа имеет порядковое значение равное нулю, второе - двум, и так далее.
Тем не менее, вы не можете присвоить числовое значение данным
перечисляемого типа, даже если оно соответствует действительным порядковым
значением, заданным в перечислении.
Объявление перечисляемого типа представляет
собой особый тип класса, а
каждая переменная этого типа является объектом.
Метод
ordinal()
возвращает порядковое значение объекта в перечислении.
Метод
name()
возвращает имя идентификатора, соответствующего значению
объекта в перечислении.
Достарыңызбен бөлісу: