Table Of ContentJava
Руководство
для начинающих
7-е издание
Java
A Beginner's
™
Guide
Seventh Edition
Herbert Schildt
New YorkC hicagSoa nF rancisco
AthensL лndonM adridM exicCoi ty
MilanN ew DelhiS ingapoSryed neyT oronto
Java
Руководство
для начинающих
7-е издание
Герберт Шилдт
Москва Санкт-Петербург
•
2019
ББК 32.973.26-018.2.75
Ш57
УДК 681.3.G7
Компьютерниоздеа тельст"вДои алектика"
Перевосда нлгийскоиг ор едакция Сергеева
А.П.
Подр едакцией Гинзбурга
В.Р.
По общимв опросаомб ращайтевс иьзд ательст"вДои алектипкоаа "д ресу:
info@dialektihktat.p/c:wo/wmw,. dialektika.com
Герберт
Ш57Ш иJлдтav, aр:у ководсдлтяв он ачинающи7х-,еи зд:.П ер.с а нгл-.С Пб.: О ОО "Диалектика",
2019-.8 16с .:и л.- Паралт.и та.н гл.
978-5-604139(4р-у5с-.5)
JSBN
ББК 32.973.26-018.2. 75
Всен азванипяр ограммнпырхо дуктяоввл яютсзяа регистрироватнонрыгмоив ыммаир камсио
ответствуюфщиирхм .
Никакачяа стньа стоящеигзод аниняи в какицхе лянхе м ожетб ытьв оспроизведве кнаак ой
бы тон иб ылоф ормеи какимбиы тон иб ылос редствабмуид,ьт оэ лектронниылеим еханические,
включафяо токопироваин зиаеп исньа м агнитнынйо сителеьс,л ин аэ тон етп исьменноргюор еше
нияи здательсMтcвGаr aw-HiEldlu cation.
AuthoriRzuesds itarann slatoiftohne E ngliesdhi tioofn (ISBN
978-1-259-5893210-17Ь8) у M cGraw-HiEld\u cationJa va: А Beginners Guide, Seventh Edition
Thitsr anslai©ts pi uoЬnl isahnedds olЬdу p ermissoifoM nc Graw-HiEldlu catiwohni,c ohw nso rc ontrols
alrli ghttops u Ьliasnhds eltlh es ame.
rightrse serveNdo. p arto ft hibso okm ayЬ еr eproduocret dr ansmiitnta endyf ormo rЬ уa nym eans,
eleAlcl troonrmi ecc hanicianlc,l udpihnogt ocopyriencgo,r dionrgЬ ,уa nyi nformatsitoonr aogrer etrieval
systewmi,t hotuhtep riowrri ttepne rmissoifto hne c opyriogwhnte arn dt heP uЫisher.
Научно-популярное издание
Герберт Шилдт
Java: руководство для начинающих, 7-е издание
Подписанво п ечат0ь5 .10.2018.
Формат7 0х10106/.Г арнитуNрeаwt onC.
Услп.е чл.. 65,7У9ч.. -илз.д3 .7 ,9.
Тираж5 00э кзЗ.а каз 9822
No
Отпечатавн АоО "ПерваОяб разцовтаияп ография"
Филиал "ЧеховскПиейч атныДйв ор"
14230М0о,с ковскоабял астг. ьЧ,е хову,л .П олиграфистдо.1в ,
Сайтww:w .chpd.ruE,- maisla:l es@chpтdе.лru8., ( 4992)7 0-73-59
ООО "Диалектика1"9,5 02С7а,н кт-ПетербМуарггн,и тогорсукла.дя,. 3 0,л ит. пом.8 48
А,
978-5-604139(4р-у5с-.5) 2019О ОО "Диалектика"
ISBN ©
978-1-259-58(9а3н1г-л7. ) 2018Ь уM cGrwa-HilEld ucation
ISBN ©
О главлен ие
Введение
17
Глава Основы Java
1. 25
Глава Знакомство с типами данных и операторами
2. 63
Глава Управляющие инструкции
3. 99
Глава Знакомство с классами, объектами и методами
4. 139
Глава Подробнее о типах данных и операторах
5. 171
Глава Подробнее о методах и классах
6. 219
Глава 7. Наследование
265
Глава Пакеты и интерфейсы
8. 311
Глава Обработка исключений
9. 349
Глава Ввод-вывод данных
1 О. 3 81
Глава Многопоточное программирование
1 1. 429
Глава Перечисления, автоупаковка, статический импорт и аннотации
12. 475
Глава Обобщения
13. 507
Глава Лямбда-выражения и ссылки на методы
14. 547
Глава Модули
15. 583
Глава Введение в Swiпg
16. 615
Глава Введение в JavaFX
17. 657
Приложение Ответы на вопросы и решения упражнений для самопроверки
А. 697
Приложение Применение документирующих комментариев в Java
Б. 751
Приложение В. Обзор технологии Java Web Staгt
761
Приложение Г. Введение в JShell
773
Приложение Д. Дополнительные сведения о ключевых словах Java
785
Приложение Знакомство с JDK
Е. 1 О 791
Предметный указатель
803
Содержание
Об авторе 16
О техническом редакторе 16
Введение 17
Эволюция Java 17
Java SE 10 21
Структура книги 22
Вопросы и упражнения для самопроверки 22
Вопросы к эксперту 22
Упражнения к главам 22
Книга для всех программистов 22
Необходимое программное обеспечение 22
Исходный код примеров программ 23
Ждем ваших отзывов! 23
Глава 1. Основы Java 25
Истоки Java 27
Связь Java с языками C и C++ 28
Вклад Java в развитие Интернета 29
Облегчение разработки интернет-приложений с помощью Java 30
Java-аплеты 30
Безопасность 31
Переносимость 31
Волшебный байт-код Java 32
За пределами аплетов 34
Основные характеристики Java 35
Объектно-ориентированное программирование 35
Инкапсуляция 37
Полиморфизм 37
Наследование 38
Установка Java Development Kit 39
Первая программа на Java 40
Ввод исходного кода программ 41
Компиляция программы 41
Построчный анализ исходного кода примера 42
Обработка синтаксических ошибок 45
Еще одна простая программа 46
Другие типы данных 48
Две управляющие инструкции 51
Инструкция 51
if
Цикл 53
for
Создание блоков кода 54
Содержание 7
Использование точки с запятой в коде программы 56
Стилевое оформление текста программ с помощью отступов 57
Ключевые слова Java 59
Идентификаторы в Java 60
Библиотеки классов Java 60
Глава 2. Знакомство с типами данных и операторами 63
Почему типы данных столь важны 64
Примитивные типы данных Java 65
Целочисленные типы данных 65
Типы данных с плавающей точкой 67
Символы 68
Логический тип данных 70
Литералы 72
Шестнадцатеричные, восьмеричные и двоичные литералы 73
Управляющие последовательности символов 73
Строковые литералы 74
Подробнее о переменных 75
Инициализация переменных 76
Динамическая инициализация 76
Область действия и время жизни переменных 77
Операторы 80
Арифметические операторы 80
Инкремент и декремент 82
Операторы сравнения и логические операторы 83
Укороченные логические операторы 85
Оператор присваивания 87
Составные операторы присваивания 87
Преобразование типов при присваивании 88
Приведение несовместимых типов 90
Приоритеты операций 91
Выражения 94
Преобразование типов в выражениях 94
Пробелы и круглые скобки 96
Глава 3. Управляющие инструкции 99
Ввод символов с клавиатуры 100
Условная инструкция 102
if
Вложенные условные инструкции 103
if
Многоступенчатая конструкция 104
if-else-if
Инструкция 106
switch
Вложенные инструкции 109
switch
Цикл 112
for
Некоторые разновидности цикла 114
for
Пропуск отдельных частей в определении цикла 115
for
Бесконечный цикл 116
Циклы без тела 117
Объявление управляющих переменных в цикле 117
for
Расширенный цикл 118
for
8 Содержание
Цикл 118
while
Цикл 120
do-while
Применение инструкции для выхода из цикла 125
break
Применение инструкции в качестве оператора 127
break goto
Использование инструкции 131
continue
Вложенные циклы 136
Глава 4. Знакомство с классами, объектами и методами 139
Основные сведения о классах 140
Общая форма определения класса 141
Определение класса 142
Порядок создания объектов 145
Переменные ссылочного типа и присваивание 146
Методы 147
Добавление метода в класс 148
Vehicle
Возврат из метода 150
Возврат значения 151
Использование параметров 153
Добавление параметризированного метода в класс 155
Vehicle
Конструкторы 162
Параметризированные конструкторы 164
Добавление конструктора в класс 164
Vehicle
Еще раз об операторе 166
new
Сборка мусора 167
Ключевое слово 167
this
Глава 5. Подробнее о типах данных и операторах 171
Массивы 172
Одномерные массивы 173
Многомерные массивы 178
Двумерные массивы 178
Нерегулярные массивы 179
Трехмерные, четырехмерные и многомерные массивы 181
Инициализация многомерных массивов 181
Альтернативный синтаксис объявления массивов 182
Присваивание ссылок на массивы 183
Применение переменной экземпляра 184
length
Цикл типа 191
for-each
Циклическое обращение к элементам многомерных массивов 194
Использование расширенного цикла 195
for
Символьные строки 196
Создание строк 196
Операции над символьными строками 197
Массивы строк 199
Неизменяемость строк 200
Использование строк для управления инструкцией 201
switch
Использование аргументов командной строки 203
Побитовые операторы 204
Побитовые операции И, ИЛИ, исключающее ИЛИ и НЕ 205
Содержание 9
Операции побитового сдвига 210
Побитовые составные операторы присваивания 213
Оператор 215
?
Глава 6. Подробнее о методах и классах 219
Управление доступом к членам класса 220
Модификаторы доступа в Java 221
Передача объектов методам 227
Способы передачи аргументов методу 228
Возврат объектов методами 231
Перегрузка методов 233
Перегрузка конструкторов 238
Рекурсия 244
Применение ключевого слова 246
static
Статические блоки 249
Вложенные и внутренние классы 253
Переменное число аргументов 257
Использование методов с переменным числом аргументов 257
Перегрузка методов с переменным числом аргументов 260
Переменное число аргументов и неоднозначность 262
Глава 7. Наследование 265
Основы наследования 266
Наследование и доступ к членам класса 270
Конструкторы и наследование 272
Использование ключевого слова для вызова конструктора суперкласса 274
super
Использование ключевого слова для доступа к членам суперкласса 278
super
Создание многоуровневой иерархии классов 282
Очередность вызова конструкторов 285
Ссылки на суперкласс и объекты подклассов 287
Переопределение методов 291
Поддержка полиморфизма в переопределяемых методах 294
Для чего нужны переопределяемые методы 296
Демонстрация механизма переопределения методов на примере
класса 297
TwoDShape
Использование абстрактных классов 301
Использование ключевого слова 305
final
Предотвращение переопределения методов 305
Предотвращение наследования 306
Применение ключевого слова к переменным экземпляра 306
final
Класс 308
Object
Глава 8. Пакеты и интерфейсы 311
Пакеты 312
Определение пакета 313
Поиск пакетов и переменная среды 314
CLASSPATH
Простой пример применения пакета 315
Пакеты и доступ к членам классов 316
Пример доступа к пакету 318
Защищенные члены классов 319