Java. Полное руководство. 8-е издание. С. Н. Тригуб Перевод с английского и редакция
Скачать 25.04 Mb.
|
false — сбрасывает Возвращает количество битов в вызывающем объекте класса Возвращает массив типа byte, который содержит вызывающий объект класса BitSet. Добавлено в JDK Возвращает массив типа long, который содержит вызывающий объект класса BitSet. Добавлено в JDK Возвращает строковый эквивалент вызывающего объекта класса Возвращает объект класса BitSet, содержащий биты из массива v. (Добавлено в JDK Возвращает объект класса BitSet, содержащий биты из буфера v. (Добавлено в JDK Возвращает объект класса BitSet, содержащий биты из массива Добавлено в JDK Возвращает объект класса BitSet, содержащий биты из буфера v. (Добавлено в JDK Выполняет операцию исключающего логического ИЛИ (XOR) над содержимым вызывающего объекта класса BitSet и переданного в н аборБит. Результат помещается в вызывающий объект Глава 18. Пакет java.util: прочие служебные классы 4 Ниже приведен пример, демонстрирующий использование класса B i t S e t . // Демонстрация применения BitSet. import jav a .u t i l .BitSet; class BitSetDemo { public static void main(String a r g s []) { BitSet bitsl = new Bi t S e t (16); BitSet bits2 = new Bi t S e t (16); // Установить некоторые биты for(int i=0; i<16; i++) { if ( (i%2) == 0) bitsl.set(i) ; if ( (i%5) != 0) b i t s 2 Начальный шаблон в bitsl: "); System.out.println(bitsl); System.out.println("ХпНачальный шаблон в b i t s 2 : "); System.out.println(bits2); // Логическое И над битами bi ts2.and(bitsl); System.out.println("\nbits2 AND bitsl: "); System.out.println(bits2); // Логическое ИЛИ над битами bi ts2.or(bitsl); System.out.println("\nbits2 OR bitsl: "); System.out.println(bits2); // Логическое исключающее ИЛИ над битами bit s 2 .xor(bitsl); System.out.println("\nbits2 XOR bitsl: "Вывод этой программы показан ниже. Когда метод t o S t r i n g () преобразует объект класса B i t S e t в его строковый эквивалент, каждый установленный бит представляется его позицией. Сброшенные биты не показаны. Начальный шаблон в bitsl: {0, 2, 4, 6, 8, 10, 12, Начальный шаблон в b i t s 2 : {1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14} bits2 AND b i t s l : {2, 4, 6, 8, 12, 14} bits2 OR bitsl: {0, 2, 4, 6, 8, 10, 12, 14} bits2 XOR b i t s l Класс Класс D a te инкапсулирует текущую дату и время. Прежде чем мы начнем изучать класс D a te , важно отметить, что этот класс ощутимо изменился по сравне 5 4 8 Часть II. Библиотека Java нию сего оригинальной версией, определенной в Java 1.0. Когда вышла версия Java 1.1, многие функции исходного класса Date были перемещены в классы Calendar и Date Format и, как результат, многие исходные методы класса Date были объявлены нежелательными (deprecated). Поскольку эти методы из Java 1.0 не должны использоваться в новом коде, здесь они не описываются. Класс Date поддерживает следующие конструкторы a t e () D a t e (long миллисекунд) Первый конструктор инициализирует объект текущей датой и временем. Второй конструктор принимает один аргумент, представляющий количество миллисекунд, прошедших с полуночи 1 января 1970 г. Методы класса Date, не относящиеся к нерекомендованным, перечислены в табл. 18.3. Класс Date также реализует интерфейс Таблица 18.3. Методы, определенные в классе D a t e Мётод Описание boolean after(Date дата before(Date дата c l o n e () int compareTo(Date дата equals(Object дата g e t T i m e () int h a s h C o d e () void setTime(long время t o S t r i n g (Возвращает значение true, если вызывающий объект класса Date содержит более позднюю дату, чем указанна в дата. В противном случае возвращает значение Возвращает значение true, если вызывающий объект класса Date содержит более раннюю дату, чем указанна в дата. В противном случае возвращает значение Дублирует вызывающий объект класса Сравнивает значения вызывающего объекта и дата Возвращает 0, если эти значения эквивалентны. Возвращает отрицательное значение, если вызывающий объект содержит более раннюю дату, чем дата Возвращает положительное значение, если вызывающий объект содержит более позднюю дату Возвращает значение true, если вызывающий объект класса Date содержит тоже самое время и дату, что и указанные в дата. В противном случае возвращает значение Возвращает количество миллисекунд, прошедших с полуночи 1 января 1970 г. Возвращает хеш-код вызывающего объекта Устанавливает время и дату в значение, переданное в параметре время который представляет число миллисекунд, прошедших с полночи 1 января 1970 г. Преобразует вызывающий объект класса Date в строку и возвращает результат_____________________________ Как вы можете видеть в табл. 18.3, новые средства класса Date не позволяют получать индивидуальные компоненты даты и времени. Как демонстрируется в следующей программе, вы можете только получить дату и время в терминах миллисекунд либо в строковом представлении по умолчанию, возвращаемом методом Чтобы получить более детальную информацию о времени и дате, используйте класс Calendar. // Показывает время и дату, используя только методы класса Date, import java.util.Date; Глава 18. Пакет java.util: прочие служебные классы 4 9 class DateDemo { public static void main(String a r g s []) { // Создать объект Date Date date = new D a t e O ; // Отобразить дату и время с помошью toString() System.out.println(date); // Отобразить количество миллисекунд, прошедших / / c l января 197 0 г. по GMT long msec = d a t e Миллисекунд прошедших с января 197 0 г. по GMT = " + Пример вывода этой программы Jan 01 10:27:33 CST Миллисекунд, прошедших с 1 января 197 0 г. по GMT = Класс Абстрактный класс C a l e n d a r представляет набор методов, позволяющих преобразовывать время в миллисекундах во множество удобных компонентов. Некоторые примеры типов информации, которые могут быть представлены, — это год, месяц, день, часы, минуты и секунды. Его задача — обеспечить своим подклассам специфические функциональные возможности по интерпретации информации о времени в соответствии с собственными правилами. Это еще один аспект библиотеки классов Java, который позволяет писать программы, работающие в различных интернациональных окружениях. Примером такого подкласса может служить класс G r e g o r i a n C a l e n d a r Класс C a l e n d a r не имеет открытых конструкторов. Класс C a l e n d a r определяет несколько защищенных переменных экземпляра. Переменная a r e F i e l d s S e t типа b o o l e a n указывает, были ли установлены компоненты времени. Переменная f i e l d s — это массив целочисленных значений, содержащих компоненты времени. Переменная i s S e t — это массив типа b o o l e a n , указывающий, был ли установлен специфический компонент времени. Переменная t i m e типа l o n g содержит текущее время объекта. Переменная i s - T im e S e t типа b o o l e a n указывает, что было установлено текущее время. Н екоторые часто используемые методы класса C a l e n d a r показаны в табл. Таблица 18.4. Часто используемые методы класса C a le n d a Метод ’ 'г V * f Описание • ' _______ ■ . * abstract void add (int которая Добавляет значение к компоненту времени или i nt значение i)iдаты, указанному в которая. Чтобы отнять, добавляйте отрицательное значение. Параметр которая может быть одним из полей, определенных в классе Calendar, таких как C a l e n d a r . HOUR boolean af ter ( Obj ect Возвращает значение true, если вызывающий объ- объектКалендаря) ект класса Calendar содержит более позднюю дату, чем объектКалендаря. В противном случае возвращает значение f a l s e 5 5 Часть II. Библиотека Продолжение табл. 18.4 Метод Описание boolean before(Object объек тКалендаря) final void c l e a r () final void clear(int которая c l o n e () boolean equals(Object объектКалендаря) int get (int поле Календаря L o c a l e [] getAvailableLocales() static Calendar g e tlnstance() static Calendar getlnstance(TimeZone ЧП Calendar getlnstance(Locale регион ЧП, Locale регион которая set(int которая значение void set(int год месяц деньМе с яц а void set(int год месяц деньМе сяца, int час int минута) Возвращает значение true, если вызывающий объект класса Calendar содержит более раннюю дату, чем объектКалендаря. В противном случае возвращает значение f a l s Обнуляет все компоненты времени в вызывающем объекте Обнуляет компонент времени вызывающего объекта, указанный в которая Возвращает дубликат вызывающего объекта Возвращает значение true, если вызывающий объект класса Calendar содержит дату, эквивалентную объектКалендаря. В противном случае возвращает значение Возвращает значение одного компонента вызывающего объекта. Компонент указывается в параметре полеКалендаря. Примеры компонентов, которые можно запросить, — Cale n d a r . YEAR, C a lendar. MONTH, C a l e n d a r . MINUTE и т.п. Возвращает массив объектов класса Locale, содержащий региональные данные, для которых в системе доступны календари Возвращает объект класса Calendar для региональных данных и часового пояса по умолчанию Возвращает объект класса Calendar для региональных данных по умолчанию и часового пояса ЧП Возвращает объект класса Calendar для региональных данных регион и часового пояса по умолчанию Возвращает объект класса Calendar для региональных данных регион и часового пояса ЧП Возвращает объект класса Date, содержащий время, эквивалентное вызывающему объекту Возвращает часовой пояс вызывающего объекта Возвращает значение true, если указанный компонент времени установлен. В противном случае возвращает значение f a l s Устанавливает компонент даты или времени вызывающего объекта, указанного в параметре которая b,bравным значению значение. Параметр которая должен иметь значение одного из полей класса Calendar, такое как Cale n d a r . Устанавливает в вызывающем объекте различные компоненты даты и времени Устанавливает в вызывающем объекте различные компоненты даты и времени Глава 18. Пакет java.util: прочие служебные классы 5 5 Описание void set(int год месяц деньМ есяца, int час int минута секунда void setTime(Date d) void setTimeZone(TimeZone ЧП) Устанавливает в вызывающем объекте различные компоненты даты и времени Устанавливает в вызывающем объекте различные компоненты даты и времени. Информация передается в объекте класса Устанавливает часовой пояс для вызывающего объекта равным ЧП В классе C a l e n d a r определены следующие целочисленные константы, которые используются, когда вы получаете или устанавливаете компоненты календаря EK MARCH TUESDAY DAY_OF_WE EK_IN_MONTH MAY UNDECIMBER DAY_0 F_Y EAR M ILLISECOND WEDNESDAY DECEMBER M INUTE WEEK_OF_MONTH DST_OFFSET MONDAY WEE K_0 F_Y В следующей программе демонстрируется использование нескольких методов класса C a le n d a r . // Демонстрация применения Calendar import java.util.Calendar; class CalendarDemo { public static void main(String a r g s []) { String m o n t h s [] = { "Jan", "Feb", "Mar", "Apr", "May", "J u n " , "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; // Создать календарь, инициализированный // текущей датой и временем с региональными данными / / и часовым поясом по умолчанию calendar = Calendar.getlnstance(); // Отобразить текущее время и дату. System.out.print("Дата: "); System.out.print(months[calendar.get(Calendar.MONTH)]); System.out.print(" " + calendar.get(Calendar.DATE) + " "); 5 5 Часть II. Библиотека Время "); System.out.print(calendar.get(Calendar.HOUR) + ":"); System.out.print(calendar.get(Calendar.MINUTE) + ":"); System.out.println(calendar.get(Calendar.SECOND)); // Установить информацию даты и времени и отобразить ее calendar.set(Calendar.HOUR, 10); calendar.set(Calendar.MINUTE, 29) ; calendar.set(Calendar.SECOND, Измененное время "); System.out.print(calendar.get(Calendar.HOUR) + ":"); System.out.print(calendar.get(Calendar.MINUTE) + ":"); Пример вывода этой программы. Дата: Jan 1 2 011 Время 11:24:25 Измененное время Класс Класс GregorianCalendar — конкретная реализация класса Calendar, которая представляет обычный Григорианский календарь, с которым вы хорошо знакомы. Метод getlnstance () класса Calendar обычно возвращает объект класса GregorianCalendar, инициированный текущей датой и временем согласно региональным данными часовому поясу по умолчанию. Класс GregorianCalendar определяет два поля AD и ВС. Они представляют две эры, определенные в Григорианском календаре. Кроме того, имеется также несколько конструкторов для объектов класса GregorianCalendar. Стандартный конструктор, GregorianCalendar () , инициирует объект текущим временем и датой в региональных данных и часовом поясе по умолчанию. Есть и другие конструкторы, представленные ниже по мере возрастания специализации (int год int месяц int деньМесяца) GregorianCalendar(int год int месяц int деньМесяца, int час, int минута год int месяц int деньМесяца, int час, int минута int секунда) Все три версии устанавливают день, месяц и год. Здесь год указывает год. Месяц задает месяц, причем нуль означает январь. День месяца — это д ен ьМ есяц а . Первая версия устанавливает время в полночь. Вторая версия устанавливает также часы и минуты. Третья версия добавляет секунды. Вы также можете создать объект класса GregorianCalendar, указав региональные данные и или часовой пояс. Следующие конструкторы создают объекты, инициированные текущим временем и датой, используя заданный часовой пояс и или региональные данные регион часовойПояс) GregorianCalendar(TimeZone часовойПояс, Locale регион Глава 18. Пакет java.util: прочие служебные классы 5 5 Класс GregorianCalendar представляет реализацию абстрактных методов класса Calendar. Кроме того, в нем определены некоторые дополнительные методы. Наиболее интересный из них — вероятно, метод isLeapYear () , который проверяет високосный год. Его форма такова isLeapYear(int год Метод возвращает значение true, если год високосный год, и значение false — в противном случае. В следующей программе демонстрируется использование класса Grego" rianCalendar. ' I Демонстрация применения GregorianCalendar import java.util.*; class GregorianCalendarDemo { public static void main(String a r g s []) { String m o n t h s [] = { "Янв", "Фев", "Map", "Май, "Ююн", "Ююл", "Авг", "Сен", "Окт", "Ноя, "Дек int year; // Создать Григорианский календарь, инициализированный // текущей датой и временем с региональными данными / / и часовым поясом по умолчанию gcalendar = new GregorianCalendar(); // Отобразить текущее время и дату. System.out.print("Дата: "); System.out.print(months[gcalendar.get(Calendar.MONTH)]); System.out.print(" " + gcalendar.get(Calendar.DATE) + " "); System.out.println(year = Время "); System.out.print(gcalendar.get(Calendar.HOUR) + ":"); System.out.print(gcalendar.get(Calendar.MINUTE) + ":"); System.out.println(gcalendar.get(Calendar.SECOND)); // Проверить — високосный ли текущий год if(gcalendar.isLeapYear(year)) Текущий год високосный Текущий год не високосный"); } } } Пример вывода этой программы. Дата: Jan 1 2 Время Текущий год не високосный Класс Еще один класс, имеющий отношение ко времени, — это класс TimeZone. Он позволяет работать с часовыми поясами, смещенными относительно Гринвича (GMT), также известного как универсальное глобальное время (Universal Coordinated 5 5 Часть II. Библиотека Java Time — UCT). Этот класс также учитывает летнее время. Класс T im eZ o n e поддерживает только стандартный конструктор. Примеры методов, определенных в классе T im eZ o n e, перечислены в табл. Таблица 18.5. Некоторые методы класса T i m e Z o n e Метод Описание Object c l o n e () static S t r i n g [] getAvailablelDs() static S t r i n g [] getAvailablelDs(int смещениеОтГринвича) static TimeZone ge t D e f a u l t () String g e t I D () abstract int g e t O f f s e t эра год месяц деньМесяца, int деньНедели, миллисекунд int getRawOffset() static TimeZone getTimeZone(String назвЧП) abstract boolean inDaylightTime(Date d) static void setDefault(TimeZone ЧП setID(String назвЧП) |