Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Books / Java_2._polnoe_rukovodstvo

.pdf
Скачиваний:
99
Добавлен:
14.10.2016
Размер:
47.97 Mб
Скачать

П.Ноутон, Г.Шилдт

JAVA 2

Подробно излагаются основы нового платформно-независимого. объектноориентированного языка программирования Java 2, приведено описание библиотек его классов и методики разработки приложений, апплетов и сервлетов с помощью Java-подсистем Bean и Swing, а также способы миграции приложений из C/C++ . В книге рассматриваются интересные и сложные Java-приложения, в том числе многопользовательская сетевая игра в слова (word game). Изложение сопровождается огромным числом примеров и законченных программ, листинги которых Вы можете найти по адресу http://www.osborne.com.

Содержание

 

Об авторах

1

Благодарности

3

Предисловие

5

ЧАСТЫ. ЯЗЫК JAVA

9

Глава 1. Генезис Java

11

Происхождение Java

11

Рождение современного программирования: C

12

Потребность в C++

13

Этап становления Java

15

Создание Java

15

Почему Java важен для Internet

17

Java-апплеты и приложения

18

Защита

18

Мобильность

19

Волшебство Java: байт-код

19

Базовые термины Java

21

Простой

21

Объектно-ориентированный

22

Устойчивый

22

Многопоточный

23

Архитектурно-независимый

23

Интерпретируемость и высокая эффективность

23

Распределенный

24

Динамический

24

Продолжение революции

24

Свойства, добавленные версией 1.1

25

Свойства, исключенные из версии 1.1

25

Свойства, добавленные версией 2

26

Свойства, исключенные из версии 2

27

Java — не расширение HTML

27

Глава 2. Обзор языка Java

29

Объектно-ориентированное программирование

29

Две парадигмы программирования

29

Абстракция

30

Три принципа ООП

31

Первая простая программа

37

Ввод программы

37

Компиляция программы

38

Подробный взгляд на первую программу

39

Вторая короткая программа

41

Два оператора управления

43

Оператор if

43

Цикл for

45

Использование блоков кода

46

Лексические вопросы

48

Пробельные символы

48

Идентификаторы

48

Константы

49

Комментарии

49

Разделители

49

Ключевые слова языка Java

50

Библиотеки классов языка Java

51

Глава 3. Типы данных, переменные и массивы

52

Java — язык со строгой типизацией

52

Простые типы

53

Целые типы

53

Тип byte

54

Тип short

55

Тип int

55

Тип long

56

Типы с плавающей точкой

56

Тип float

57

Тип double

57

Символьный тип (char)

58

Булевский тип (boolean)

59

Подробнее о литералах

60

Целочисленные литералы

60

Литералы с плавающей точкой

61

Булевы литералы

62

Символьные литералы

62

Строковые литералы

63

Переменные

63

Объявление переменной

63

Динамическая инициализация

64

Область действия и время жизни переменных

65

Преобразование и приведение типов

68

Автоматическое преобразование типов в Java

68

Приведение несовместимых типов

69

Автоматическое расширение типа в выражениях

70

Правила расширения типов

71

Массивы

72

Одномерные массивы

72

Многомерные массивы

75

Альтернативный синтаксис объявления массива

80

Несколько слов относительно строк

80

Замечание для программистов C/C++ по поводу указателей

81

Глава 4. Операции

82

Арифметические операции

82

Основные арифметические операции

83

Деление по модулю

84

Арифметические операции присваивания

85

Инкремент и декремент

86

Поразрядные операции

88

Поразрядные логические операции

90

Левый сдвиг

92

Правый сдвиг

94

Правый сдвиг без знака

96

Поразрядная операция присваивания

97

Операции отношений

98

Операции булевой логики

100

Короткие логические операции

102

Операция присваивания

102

Условная операция

103

Старшинство операций

104

Использование круглых скобок

105

Глава 5. Управляющие операторы

106

Операторы выбора Java

106

Оператор if

106

Оператор switch

110

Операторы цикла

115

Оператор цикла while

115

Оператор цикла do while

117

Оператор цикла for

120

Вложенные циклы

125

Операторы перехода

125

Использование оператора break

126

Использование оператора continue

130

Оператор return

132

Глава 6. Введение в классы

133

Основы классов

133

Общая форма класса

134

Простой класс

135

Объявление объектов

138

Операция new

139

Назначение ссылочных переменных объекта

140

Представление методов

141

Добавление метода к классу Box

142

Возврат значений

144

Добавление метода с параметрами

146

Конструкторы

148

Параметризованные конструкторы

150

Ключевое слово this

152

Скрытие переменной экземпляра

152

Сборка "мусора"

153

Метод finalize()

153

Класс Stack

154

Глава 7. Методы и классы

158

Перегрузка методов

158

Перегрузка конструкторов

162

Использование объектов в качестве параметров

164

Передача аргументов

167

Возврат объектов

169

Рекурсия

170

Управление доступом

172

Статические элементы

177

Спецификатор final

179

Ревизия массивов

179

Вложенные и внутренние классы

181

Класс String

185

Использование аргументов командной строки

188

Глава 8. Наследование

189

Основы наследования

189

Доступ к элементам и наследование

191

Практический пример

192

Переменная суперкласса может ссылаться на объект подкласса

195

Использование ключевого слова super

196

Вызов конструктора суперкласса с помощью первой формы super

196

Использование второй формы super

200

Создание многоуровневой иерархии

201

Когда вызываются конструкторы

204

Переопределение методов

205

Динамическая диспетчеризация методов

208

Зачем нужны переопределенные методы?

210

Применение переопределения методов

211

Использование абстрактных классов

212

Использование ключевого слова final с наследованием

216

Использование final для отказа от переопределения

216

Использование final для отмены наследования

217

Класс Object

217

Глава 9. Пакеты и интерфейсы

219

Пакеты

220

Определение пакета

220

Использование CLASSPATH

221

Короткий пример пакета

222

Зашита доступа

223

Пример управления доступом

224

Импорт пакетов

228

Интерфейсы

230

Определение интерфейса

231

Реализация интерфейсов

232

Применения интерфейсов

235

Переменные в интерфейсах

239

Расширение интерфейсов

241

Глава 10. Обработка исключений

243

Основные принципы обработки исключений

243

Типы исключений

244

Неотловленные исключения

245

Использование операторов try и catch

246

Отображение описания исключения

248

Множественные операторы catch

249

Вложенные операторы try

251

Оператор throw

253

Методы с ключевым словом throws

255

Блок finally

256

Встроенные исключения Java

258

Создание собственных подклассов исключений

260

Использование исключений

262

Глава 11. Многопоточное программирование

263

Поточная модель Java

264

Приоритеты потоков

265

Синхронизация

266

Передача сообщений

266

Класс Thread и интерфейс Runnable

267

Главный поток

268

Создание потока

270

Реализация интерфейса Runnable

270

Расширение Thread

272

Выбор подхода

^74

Создание множественных потоков

274

Использование методов isAlive() и join()

276

Приоритеты потоков

?78

Синхронизация

281

Использование синхронизированных методов

282

Оператор synchronized

284

Межпоточные связи

786

Блокировка

791

Приостановка, возобновление и остановка потоков

794

Приостановка, возобновление и остановка потоков в Java 1.1 и более

794

ранних версиях

 

Приостановка, возобновление и остановка потока в Java 2

297

Использование многопоточности

299

Глава 12. Ввод/вывод, апплеты и другие темы

301

Основы ввода/вывода

301

Потоки

302

Байтовые и символьные потоки

302

Предопределенные потоки

305

Чтение консольного ввода

306

Чтение символов

307

Чтение строк

308

Запись консольного вывода

309

Класс PrintWriter

310

Чтение и запись файлов

312

Апплеты. Основы программирования

315

Модификаторы transient и volatile

319

Использование instanceof

319

Ключевое слово strictfp

322

Native-методы

323

Проблемы native-методов

327

ЧАСТЬ II. БИБЛИОТЕКА JAVA

329

Глава 13. Обработка строк

331

String-конструкторы

332

Длина строки

334

Специальные строковые операции

334

Строковые литералы

335

Конкатенация строк

335

Конкатенация других типов данных

336

Преобразование строк и метод toString()

337

Извлечение символов

338

Метод charAt()

338

Метод getChars()

339

Метод getBytes()

339

Метод toCharArray()

340

Сравнение строк

340

Методы equals() и equalsIgnoreCase()

340

Метод region Matches()

341

Методы startsWith() и endsWith()

341

Сравнение equals() и операции = =

343

Метод compareTo()

343

Поиск строк

344

Изменение строки

346

Метод substring()

346

Метод concat()

347

Метод replace()

348

Метод trim()

348

Преобразование данных, использующее метод valueOf()

349

Изменение регистра символов в строке

350

Класс StringBitffer

350

Конструкторы StringBuffer

351

Методы length() и capacity()

351

Метод ensureCapacity()

352

Метод setLength()

352

Методы charAt() и setCharAt()

353

Метод getChars()

353

Метод append()

354

Метод insert()

355

Метод reverse()

355

Методы delete() и deleteCharAt()

356

Метод replace()

357

Метод substring()

357

Глава 14. Пакет java.lang

358

Оболочки простых типов

359

Класс Number

359

Оболочки Double и Float

360

Оболочки Byte, Short, Integer и Long

365

Оболочка Character

374

Оболочка Boolean

378

Класс Void

378

Класс Process

379

Класс Runtime

379

Управление памятью

381

Выполнение других программ

382

Класс System

384

Использование метода currentTimeMillis()

386

Использование метода arraycopy()

387

Свойства среды

387

Класс Object

388

Использование метода clone() и интерфейса Cloneable

389

Класс Class

391

Класс ClassLoader

394

Класс Math

395

Трансцендентные функции

395

Экспоненциальные функции

396

Округление функций

397

Разные методы класса Math

398

Компилятор

399

Классы Thread, ThreadGroup и интерфейс Runnable

399

Интерфейс Runnable

399

Класс Thread

399

Класс ThreadGroup

402

Классы ThreadLocal и InheritableThreadLocal

407

Класс Package

408

Класс RunrimePermission

409

Класс Trowable

409

Класс SecurityManager

410

Интерфейс Comparable

410

Пакеты iava.lang.ref и java.lang.reflect

410

Пакет java. lang.ref

410

Пакет java.lang.reflect

411

Глава 15. Пакет java.util: структура коллекций

412

Краткий обзор коллекций

413

Интерфейсы коллекций

415

Интерфейс Collection

416

Интерфейс List

419

Интерфейс Set

421

Интерфейс SortedSet

421

Классы Collection

422

Класс ArrayList

423

Получение массива из ArrayList-объекта

425

Класс LinkedList

427

Класс HashSet

428

Класс TreeSet

430

Доступ к коллекции через итератор

431

Использование итератора

433

Коллекции пользовательских классов

434

Работа с картами отображений

436

Интерфейсы карт

436

Классы карт отображений

440

Компараторы

444

Использование компаратора

445

Алгоритмы коллекций

448

Массивы

452

Наследованные классы и интерфейсы

456

Интерфейс Enumeration

457

Класс Vector

457

Класс Stack

463

Класс Dictionary

465

Класс Hashtable

466

Класс Properties

470

Использование методов store() и load()

474

Резюме

476

Глава 16. Пакет java.util: сервисные классы

477

Класс StringTokenizer

477

Класс BitSet

479

Класс Date

482

Сравнение дат

484

Класс Calendar

484

Класс GregorianCalendar

488

Класс TimeZone

490

Класс SimpleTimeZone

491

Класс Locale

492

Класс Random

493

Класс Observable

496

Интерфейс Observable

497

Пример наблюдателя

498

Пакет java.util.zip

500

Пакет java.util.jar

500

Глава 17. Ввод/вывод: обзор пакета java.io

501

Классы и интерфейсы ввода/вывода Java

501

Класс File

503

Каталоги

506

Использование интерфейса FilenameFilter

507

Альтернативный метод listFiles()

508

Создание каталогов

509

Поточные классы

509

Байтовые потоки

509

Класс InputStream

510

Класс OutputStream

510

Класс FileInputStream

511

Класс FileOutputStream

513

Класс ByteArrayInputStream

515

Класс ByteArrayOuputStream

516

Фильтрованные байтовые потоки

517

Буферизированные байтовые потоки

518

Класс SequenceInputStream

522

Класс PrintStream

523

Класс RandomAccessFile

524

Символьные потоки

525

Класс Reader

525

Класс Writer

526

Класс FileReader

527

Класс FileWriter

528

Класс CharArrayReader

529

Класс CharArrayWriter

530

Класс BufferedReader

531

Класс BufferedWriter

533

Класс PushbackReader

533

Класс PrintWriter

534

Использование поточного ввода/вывода

535

Улучшение метода wc с помощью класса StreamTokenizer

537

Сериализация

519

Интерфейс Serializable

540

Интерфейс Externalizable

540

Интерфейс Object Output

540

Класс ObjeclOiirpulStream

541

Интерфейс ObjectInput

54?

Класс ObjectInputStream

541

Пример с сериализацией

545

Преимущества потоков

547

Глава 18. Работа в сети

548

Основы работы в сети

548

Обзор сокетов

544

Клиент-сервер

549

Зарезервированные сокеты

550

Proxy-серверы

551

Адресация Internet

552

Java и сеть

552

Сетевые классы и интерфейсы

553

Класс InetAddress

553

Соседние файлы в папке Books