Главная страница
Навигация по странице:

  • Comparable 140Java_SE_9_for_the_Impatient_2nd_Edit.indb 8 16.04.2018 16:40:07 9 Содержание3.3.2. Интерфейс Comparator

  • Comparator 160 3.9. Локальные и анонимные классы 161 3.9.1. Локальные классы 162 3.9.2. Анонимные классы 162Упражнения 1634

  • Objects.requireNonNull()

  • URLConnection и HttpURLConnection

  • Serializable 367 9.5.2. Переходные переменные экземпляра 369 9.5.3. Методы readObject() и writeObject() 369 9.5.4. Методы readResolve() и writeReplace()

  • Кей С. Хорстманн


    Скачать 1.62 Mb.
    НазваниеКей С. Хорстманн
    Дата07.04.2023
    Размер1.62 Mb.
    Формат файлаpdf
    Имя файлаjavase9bazovyykurs.pdf
    ТипДокументы
    #1044418
    страница1 из 4
      1   2   3   4

    Об авторе
    Кей С. Хорстманн — автор книг Scala for the Impatient (издательство
    Addison-Wesley, 2012 г.
    1
    ) и Java SE 8 for the Really Impatient (издательство
    Addison-Wesley, 2014 г.
    2
    ), а также двухтомного издания Core Java™, Volumes I
    and II, Tenth Edition (издательство Prentice Hall, 2013 г.
    3
    ). Он также написал бо- лее десятка других книг для профессиональных программистов и изучающих вычислительную технику. Кей является профессором на кафедре вычисли- тельной техники при университете штата Калифорния в г. Сан-Хосе и носит почетное звание “Чемпион по Java”.
    1
    В русском переводе книга вышла под названием Scala для нетерпеливых в изда- тельстве “ДМК-Пресс”, Москва, 2013 г.
    2
    В русском переводе книга вышла под названием Java SE 8. Вводный курс в ИД
    “Вильямс”, 2014 г.
    3
    В русском переводе это издание вышло в двух томах под общим названием Java.
    Библиотека профессионала в ИД “Вильямс”, 2017 г.
    Java_SE_9_for_the_Impatient_2nd_Edit.indb 21 16.04.2018 16:40:07

    Содержание
    ПРЕДИСЛОВИЕ
    18
    БЛАГОДАРНОСТИ
    20
    ОБ АВТОРЕ
    21
    От издательства
    22
    1
    ОСНОВОПОЛАГАЮЩИЕ СТРУКТУРЫ ПРОГРАММИРОВАНИЯ
    23 1.1. Первая программа на Java
    24 1.1.1. Анализ программы "Hello, World!"
    25 1.1.2. Компилирование и выполнение первой программы на Java
    26 1.1.3. Вызовы методов
    28 1.1.4. Консольное приложение JShell
    30 1.2. Примитивные типы
    34 1.2.1. Целочисленные типы со знаком
    34 1.2.2. Числовые типы с плавающей точкой
    36 1.2.3. Тип char
    37 1.2.4. Логический тип
    37 1.3. Переменные
    38 1.3.1. Объявление переменных
    38 1.3.2. Именование переменных
    38 1.3.3. Инициализация переменных
    39 1.3.4. Константы
    39 1.4. Арифметические операции
    41 1.4.1. Присваивание
    41 1.4.2. Основные арифметические операции
    42 1.4.3. Математические методы
    44 1.4.4. Преобразования числовых типов
    44 1.4.5. Операции отношения и логические операции
    46 1.4.6. Большие числа
    48 1.5. Символьные строки
    49 1.5.1. Сцепление символьных строк
    49 1.5.2. Подстроки
    50 1.5.3. Сравнение символьных строк
    51 1.5.4. Взаимное преобразование чисел и символьных строк
    52 1.5.5. Прикладной программный интерфейс API для обработки символьных строк
    53 1.5.6. Кодовые точки и единицы
    55 1.6. Ввод-вывод
    58
    Java_SE_9_for_the_Impatient_2nd_Edit.indb 6 16.04.2018 16:40:07

    7
    Содержание
    1.6.1. Чтение вводимых данных
    58 1.6.2. Форматированный вывод данных
    60 1.7. Управляющая логика
    62 1.7.1. Условные переходы
    62 1.7.2. Циклы
    64 1.7.3. Прерывание и продолжение цикла
    66 1.7.4. Область видимости локальных переменных
    68 1.8. Обычные и списочные массивы
    69 1.8.1. Обращение с массивами
    70 1.8.2. Построение массива
    70 1.8.3. Списочные массивы
    72 1.8.4. Классы-оболочки для примитивных типов данных
    73 1.8.5. Расширенный цикл for
    74 1.8.6. Копирование обычных и списочных массивов
    74 8.7. Алгоритмы обработки массивов
    76 1.8.8. Аргументы командной строки
    77 1.8.9. Многомерные массивы
    78 1.9. Функциональная декомпозиция
    80 1.9.1. Объявление и вызов статических методов
    80 1.9.2. Массивы параметров и возвращаемые значения
    81 1.9.3. Переменное число аргументов
    81
    Упражнения
    82
    2
    ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ
    85 2.1. Обращение с объектами
    86 2.1.1. Методы доступа и модифицирующие методы
    89 2.1.2. Ссылки на объекты
    90 2.2. Реализация классов
    92 2.2.1. Переменные экземпляра
    92 2.2.2. Заголовки методов
    93 2.2.3. Тела методов
    93 2.2.4. Вызов методов экземпляра
    94 2.2.5. Ссылка this
    94 2.2.6. Вызов по значению
    95 2.3. Создание объектов
    97 2.3.1. Реализация конструкторов
    97 2.3.2. Перегрузка
    98 2.3.3. Вызов одного конструктора из другого
    98 2.3.4. Инициализация по умолчанию
    99 2.3.5. Инициализация переменных экземпляра
    100 2.3.6. Конечные переменные экземпляра
    101 2.3.7. Конструкторы без аргументов
    101 2.4. Статические переменные и методы
    102
    Java_SE_9_for_the_Impatient_2nd_Edit.indb 7 16.04.2018 16:40:07

    Содержание
    8
    2.4.1. Статические переменные
    102 2.4.2. Статические константы
    103 2.4.3. Статические блоки инициализации
    104 2.4.4. Статические методы
    104 2.4.5. Фабричные методы
    106 2.5. Пакеты
    106 2.5.1. Объявление пакетов
    107 2.5.2. Утилита jar
    108 2.5.3. Путь к классу
    109 2.5.4. Доступ к пакетам
    111 2.5.5. Импорт классов
    112 2.5.6. Статический импорт
    113 2.6. Вложенные классы
    114 2.6.1. Статические вложенные классы
    114 2.6.2. Внутренние классы
    115 2.6.3. Правила специального синтаксиса для внутренних классов
    118 2.7. Документирующие комментарии
    119 2.7.1. Ввод комментариев
    120 2.7.2. Комментарии к классам
    121 2.7.3. Комментарии к методам
    121 2.7.4. Комментарии к переменным
    122 2.7.5. Общие комментарии
    122 2.7.6. Ссылки
    122 2.7.7. Комментарии к пакетам и общие комментарии
    123 2.7.8. Извлечение комментариев
    124
    Упражнения
    125
    3
    ИНТЕРФЕЙСЫ И ЛЯМБДА-ВЫРАЖЕНИЯ
    129 3.1. Интерфейсы
    130 3.1.1. Объявление интерфейса
    131 3.1.2. Реализация интерфейса
    132 3.1.3. Преобразование в интерфейсный тип
    133 3.1.4. Приведение типов и операция instanceof
    134 3.1.5. Расширение интерфейсов
    135 3.1.6. Реализация нескольких интерфейсов
    135 3.1.7. Константы
    136 3.2. Статические, закрытые и методы по умолчанию
    136 3.2.1. Статические методы
    136 3.2.2. Методы по умолчанию
    137 3.2.3. Разрешение конфликтов с методами по умолчанию
    138 3.2.4. Закрытые методы
    140 3.3. Примеры интерфейсов
    140 3.3.1. Интерфейс Comparable
    140
    Java_SE_9_for_the_Impatient_2nd_Edit.indb 8 16.04.2018 16:40:07

    9
    Содержание
    3.3.2. Интерфейс Comparator
    142 3.3.3. Интерфейс Runnable
    143 3.3.4. Обратные вызовы в пользовательском интерфейсе
    144 3.4. Лямбда-выражения
    145 3.4.1. Синтаксис лямбда-выражений
    145 3.4.2. Функциональные интерфейсы
    147 3.5. Ссылки на методы и конструкторы
    148 3.5.1. Ссылки на методы
    148 3.5.2. Ссылки на конструкторы
    150 3.6. Обработка лямбда-выражений
    151 3.6.1. Реализация отложенного выполнения
    151 3.6.2. Вызов функционального интерфейса
    152 3.6.3. Реализация собственных функциональных интерфейсов
    154 3.7. Область видимости лямбда-выражений и переменных
    155 3.7.1. Область видимости лямбда-выражения
    155 3.7.2. Доступ к переменным из объемлющей области видимости
    156 3.8. Функции высшего порядка
    159 3.8.1. Методы, возвращающие функции
    159 3.8.2. Методы, изменяющие функции
    160 3.8.3. Методы из интерфейса Comparator
    160 3.9. Локальные и анонимные классы
    161 3.9.1. Локальные классы
    162 3.9.2. Анонимные классы
    162
    Упражнения
    163
    4
    НАСЛЕДОВАНИЕ И РЕФЛЕКСИЯ
    167 4.1. Расширение классов
    169 4.1.1. Суперклассы и подклассы
    169 4.1.2. Определение и наследование методов из суперкласса
    170 4.1.3. Переопределение методов
    170 4.1.4. Создание подкласса
    172 4.1.5. Присваивания в суперклассе
    172 4.1.6. Приведение типов
    173 4.1.7. Конечные методы и классы
    174 4.1.8. Абстрактные методы и классы
    175 4.1.9. Защищенный доступ
    176 4.1.10. Анонимные подклассы
    177 4.1.11. Наследование и методы по умолчанию
    177 4.1.12. Ссылки на методы типа super
    178 4.2. Всеобъемлющий суперкласс Object
    179 4.2.1. Метод toString()
    180 4.2.2. Метод equals()
    181 4.2.3. Метод hashCode()
    184
    Java_SE_9_for_the_Impatient_2nd_Edit.indb 9 16.04.2018 16:40:07

    Содержание
    10
    4.2.4. Клонирование объектов
    186 4.3. Перечисления
    189 4.3.1. Методы перечислений
    189 4.3.2. Конструкторы, методы и поля
    191 4.3.3. Тела экземпляров
    191 4.3.4. Статические члены
    192 4.3.5. Переход по перечислению
    193 4.4. Динамическая идентификация типов: сведения и ресурсы
    194 4.4.1. Класс Class
    194 4.4.2. Загрузка ресурсов
    197 4.4.3. Загрузчики классов
    198 4.4.4. Загрузчик контекста классов
    199 4.4.5. Загрузчики служб
    201 4.5. Рефлексия
    203 4.5.1. Перечисление членов класса
    203 4.5.2. Исследование объектов
    204 4.5.3. Вызов методов
    205 4.5.4. Создание объектов
    206 4.5.5. Компоненты JavaBeans
    207 4.5.6. Обращение с массивами
    208 4.5.7. Заместители
    210
    Упражнения
    212
    5
    ИСКЛЮЧЕНИЯ, УТВЕРЖДЕНИЯ И ПРОТОКОЛИРОВАНИЕ
    215 5.1. Обработка исключений
    217 5.1.1. Генерирование исключений
    217 5.1.2. Иерархия исключений
    218 5.1.3. Объявление проверяемых исключений
    220 5.1.4. Перехват исключений
    222 5.1.5. Оператор try с ресурсами
    223 5.1.6. Оператор finally
    225 5.1.7. Повторное генерирование и связывание исключений в цепочку
    226 5.1.8. Необрабатываемые исключения и трассировка стека
    227 5.1.9. Метод Objects.requireNonNull()
    228 5.2. Утверждения
    229 5.2.1. Применение утверждений
    230 5.2.2. Разрешение и запрет утверждений
    230 5.3. Протоколирование
    231 5.3.1. Применение регистраторов
    232 5.3.2. Регистраторы
    232 5.3.3. Уровни протоколирования
    233 5.3.4. Другие методы протоколирования
    234 5.3.5. Конфигурация протоколирования
    235
    Java_SE_9_for_the_Impatient_2nd_Edit.indb 10 16.04.2018 16:40:07

    11
    Содержание
    5.3.6. Обработчики протоколов
    236 5.3.7. Фильтры и средства форматирования
    239
    Упражнения
    240
    6
    ОБОБЩЕННОЕ ПРОГРАММИРОВАНИЕ
    243 6.1. Обобщенные классы
    245 6.2. Обобщенные методы
    246 6.3. Ограничения типов
    247 6.4. Вариантность типов и метасимволы подстановки
    248 6.4.1. Метасимволы подстановки подтипов
    249 6.4.2. Метасимволы подстановки супертипов
    250 6.4.3. Применение метасимволов подстановки в переменных типа
    251 6.4.4. Неограниченные метасимволы подстановки
    253 6.4.5. Захват подстановки
    253 6.5. Обобщения в виртуальной машине
    254 6.5.1. Стирание типов
    255 6.5.2. Вставка приведения типов
    255 6.5.3. Мостовые методы
    256 6.6. Ограничения, накладываемые на обобщения
    258 6.6.1. Запрет на аргументы примитивных типов
    258 6.6.2. Во время компиляции все типы оказываются базовыми
    258 6.6.3. Нельзя получить экземпляры обобщенных типов
    259 6.6.4. Нельзя создать массивы параметризированных типов
    261 6.6.5. Нельзя употреблять параметры типа класса в статическом контексте
    263 6.6.6. Методы не должны конфликтовать после стирания
    263 6.6.7. Исключения и обобщения
    264 6.7. Обобщения и рефлексия
    265 6.7.1. Класс Class
    265 6.7.2. Сведения об обобщенном типе в виртуальной машине
    267
    Упражнения
    269
    7
    КОЛЛЕКЦИИ
    273 7.1. Краткий обзор каркаса коллекций
    274 7.2. Итераторы
    279 7.3. Множества
    281 7.4. Отображения
    283 7.5. Другие коллекции
    286 7.5.1. Свойства
    286 7.5.2. Множества битов
    288 7.5.3. Перечислимые множества и отображения
    289 7.5.4. Стеки и разнотипные очереди
    290 7.5.5. Слабые хеш-отображения
    292
    Java_SE_9_for_the_Impatient_2nd_Edit.indb 11 16.04.2018 16:40:07

    Содержание
    12
    7.6. Представления
    292 7.6.1. Мелкие коллекции
    292 7.6.2. Диапазоны
    293 7.6.3. Неизменяемые представления
    294
    Упражнения
    295
    8
    ПОТОКИ ДАННЫХ
    299 8.1. От итерации к потоковым операциям
    300 8.2. Создание потока данных
    302 8.3. Методы filter(), map() и flatMap()
    304 8.4. Извлечение и соединение потоков данных
    306 8.5. Другие потоковые преобразования
    307 8.6. Простые методы свед
    ения
    308 8.7. Тип Optional
    309 8.7.1. Как обращаться с необязательными значениями
    309 8.7.2. Как не следует обращаться с необязательными значениями
    311 8.7.3. Формирование необязательных значений
    311 8.7.4. Сочетание функций необязательных значений с методом flatMap()
    312 8.7.5. Преобразование необязательного значения в поток данных
    313 8.8. Накопление результатов
    314 8.9. Накопление результатов в отображениях
    315 8.10. Группирование и разделение
    317 8.11. Нисходящие коллекторы
    318 8.12. Операции свед ения
    321 8.13. Потоки данных примитивных типов
    323 8.14. Параллельные потоки данных
    324
    Упражнения
    327
    9
    ОРГАНИЗАЦИЯ ВВОДА-ВЫВОДА
    331 9.1. Потоки ввода, вывода, чтения и записи
    332 9.1.1. Получение потоков ввода-вывода
    333 9.1.2. Ввод байтов
    333 9.1.3. Вывод байтов
    334 9.1.4. Кодировки символов
    335 9.1.5. Ввод текста
    338 9.1.6. Вывод текста
    340 9.1.7. Ввод-вывод двоичных данных
    341 9.1.8. Произвольный доступ к файлам
    342 9.1.9. Файлы, отображаемые в памяти
    343 9.1.10. Блокировка файлов
    343 9.2. Каталоги, файлы и пути к ним
    344 9.2.1. Пути к файлам
    344
    Java_SE_9_for_the_Impatient_2nd_Edit.indb 12 16.04.2018 16:40:07

    13
    Содержание
    9.2.2. Создание файлов и каталогов
    346 9.2.3. Копирование, перемещение и удаление файлов
    347 9.2.4. Обход элементов каталога
    349 9.2.5. Системы файлов формата ZIP
    352 9.3. Подключения по заданному URL
    353 9.3.1. Классы URLConnection и HttpURLConnection
    353 9.3.2. Прикладной интерфейс API для HTTP-клиентов
    354 9.4. Регулярные выражения
    357 9.4.1. Синтаксис регулярных выражений
    357 9.4.2. Обнаружение одного совпадения
    361 9.4.3. Обнаружение всех совпадений
    362 9.4.4. Группы
    363 9.4.5. Разбиение по разделителям
    364 9.4.6. Замена совпадений
    365 9.4.7. Признаки
    366 9.5. Сериализация
    367 9.5.1. Интерфейс Serializable
    367 9.5.2. Переходные переменные экземпляра
    369 9.5.3. Методы readObject() и writeObject()
    369 9.5.4. Методы readResolve() и writeReplace()
    371 9.5.5. Контроль версий
    372
    Упражнения
    373
    10
    ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ
    377 10.1. Параллельные задачи
    379 10.1.1. Выполнение задач
    379 10.1.2. Будущие действия
    382 10.2. Асинхронные вычисления
    384 10.2.1. Завершаемые будущие действия
    384 10.2.2. Составление завершаемых будущих действий
    386 10.2.3. Длительные задачи в обратных вызовах пользовательского интерфейса
    390 10.3. Безопасность потоков исполнения
    392 10.3.1. Доступность
    392 10.3.2. Состояние гонок
    394 10.3.3. Методики надежного параллельного программирования
    397 10.3.4. Неизменяемые классы
    398 10.4. Параллельные алгоритмы
    399 10.4.1. Параллельные потоки данных
    399 10.4.2. Параллельные операции над массивами
    400 10.5. Потокобезопасные структуры данных
    401 10.5.1. Параллельные хеш-отображения
    402 10.5.2. Блокирующие очереди
    404
    Java_SE_9_for_the_Impatient_2nd_Edit.indb 13 16.04.2018 16:40:07

    Содержание
    14
    10.5.3. Другие потокобезопасные структуры данных
    405 10.6. Атомарные счетчики и накапливающие сумматоры
    406 10.7. Блокировки и условия
    409 10.7.1. Блокировки
    410 10.7.2. Ключевое слово synchronized
    411 10.7.3. Ожидание по условию
    413 10.8. Потоки исполнения
    415 10.8.1. Запуск потока исполнения
    416 10.8.2. Прерывание потока исполнения
    416 10.8.3. Локальные переменные в потоках исполнения
    418 10.8.4. Различные свойства потоков исполнения
    419 10.9. Процессы
    420 10.9.1. Построение процесса
    420 10.9.2. Выполнение процесса
    422 10.9.3. Дескрипторы процессов
    423
    Упражнения
    425
    11
    АННОТАЦИИ
    431 11.1. Применение аннотаций
    433 11.1.1. Элементы аннотаций
    433 11.1.2. Многие и повторяющиеся аннотации
    434 11.1.3. Объявление аннотаций
    435 11.1.4. Аннотации в местах употребления типов
    436 11.1.5. Явное указание получателей аннотаций
    438 11.2. Определение аннотаций
    439 11.3. Стандартные аннотации
    441 11.3.1. Аннотации для компиляции
    442 11.3.2. Аннотации для управления ресурсами
    443 11.3.3. Мета-аннотации
    444 11.4. Обработка аннотаций во время выполнения
    446 11.5. Обработка аннотаций на уровне исходного кода
    449 11.5.1. Процессоры аннотаций
    449 11.5.2. Прикладной программный интерфейс API модели языка
    450 11.5.3. Генерирование исходного кода с помощью аннотаций
    451
    Упражнения
    454
    12
    ПРИКЛАДНОЙ ИНТЕРФЕЙС API ДАТЫ И ВРЕМЕНИ
    457 12.1. Временн ая шкала
    458 12.2. Местные даты
    461 12.3. Корректоры дат
    464 12.4. Местное время
    466 12.5. Поясное время
    467 12.6. Форматирование и синтаксический анализ даты и времени
    471
    Java_SE_9_for_the_Impatient_2nd_Edit.indb 14 16.04.2018 16:40:07

    15
    Содержание
    12.7. Взаимодействие с унаследованным кодом
    474
    Упражнения
    475
    13
    ИНТЕРНАЦИОНАЛИЗАЦИЯ
    477 13.1. Региональные настройки
    478 13.1.1. Указание региональных настроек
    479 13.1.2. Региональные настройки по умолчанию
    482 13.1.3. Отображаемые имена
    483 13.2. Форматы чисел
    485 13.3. Денежные единицы
    486 13.4. Форматирование даты и времени
    487 13.5. Сортировка и нормализация
    489 13.6. Форматирование сообщений
    491 13.7. Комплекты ресурсов
    493 13.7.1. Организация комплектов ресурсов
    494 13.7.2. Классы комплектов ресурсов
    496 13.8. Кодировки символов
    497 13.9. Глобальные параметры настройки
    498
    Упражнения
    500
    14
    КОМПИЛЯЦИЯ И НАПИСАНИЕ СЦЕНАРИЕВ
    503 14.1. Прикладной программный интерфейс API компилятора
    504 14.1.1. Вызов компилятора
    504 14.1.2. Запуск задания на компиляцию
    505 14.1.3. Чтение исходных файлов из оперативной памяти
    506 14.1.4. Запись байт-кодов в оперативную память
    507 14.1.5. Фиксация диагностической информации
    508 14.2. Прикладной программный интерфейс API для сценариев
    509 14.2.1. Получение механизма сценариев
    509 14.2.2. Привязки
    511 14.2.3. Переадресация ввода-вывода
    511 14.2.4. Вызов функций и методов из сценариев
    512 14.2.5. Компилирование сценария
    513 14.3. Интерпретатор Nashorn
    514 14.3.1. Выполнение Nashorn из командной строки
    514 14.3.2. Вызов методов получения, установки и перегружаемых методов
    515 14.3.3. Построение объектов Java
    516 14.3.4. Символьные строки в JavaScript и Java
    518 14.3.5. Числа
    519 14.3.6. Обращение с массивами
    519 14.3.7. Списки и отображения
    521 14.3.8. Лямбда-выражения
    521
    Java_SE_9_for_the_Impatient_2nd_Edit.indb 15 16.04.2018 16:40:07

    Содержание
      1   2   3   4


    написать администратору сайта