Глава 1. Общие представления о языке Java

Содержание

Введение.......................................................................................................................................................................................... 6

Глава 1. Общие представления о языке Java........................................................................................................................ 7

1.1. Java и другие языки программирования. Системное и прикладное программирование............................ 7

1.2. Виртуальная Java-машина, байт-код, JIT-компиляция. Категории программ, написанных на языке Java 11

1.3.Алфавит языка Java. Десятичные и шестнадцатеричные цифры и целые числа. Зарезервированные слова 16

Алфавит языка Java......................................................................................................................................................... 16

Десятичные и шестнадцатеричные цифры и целые числа................................................................................... 16

Зарезервированные слова языка Java........................................................................................................................ 18

1.4. Управляющие последовательности. Символы Unicode. Специальные символы........................................ 18

Управляющие последовательности............................................................................................................................ 18

Простые специальные символы................................................................................................................................... 19

Составные специальные символы............................................................................................................................... 20

1.5.Идентификаторы. Переменные и типы. Примитивные и ссылочные типы..................................................... 21

Краткие итоги по главе 1..................................................................................................................................................... 24

Задания..................................................................................................................................................................................... 25

Глава 2. Объектно-ориентированное проектирование и платформа NetBeans....................................................... 26

2.1.Процедурное и объектно-ориентированное программирование. Инкапсуляция........................................ 26

2.2. Работа со ссылочными переменными. Сборка мусора...................................................................................... 29

2.3. Проекты NetBeans. Пакеты. Уровни видимости классов. Импорт классов................................................... 33

2.4. Базовые пакеты и классы Java................................................................................................................................... 35

2.5. Создание в NetBeans простейшего приложения Java......................................................................................... 38

2.6. Компиляция файлов проекта и запуск приложения............................................................................................. 42

2.7. Структура проекта NetBeans..................................................................................................................................... 43

2.8. Создание в NetBeans приложения Java с графическим интерфейсом............................................................ 46

2.9. Редактор экранных форм............................................................................................................................................. 49

2.10. Внешний вид приложения......................................................................................................................................... 53

2.11. Ведение проектов........................................................................................................................................................ 54

2.11. Редактирование меню экранной формы............................................................................................................... 56

2.12. Создание нового класса............................................................................................................................................ 58

2.13. Документирование исходного кода в Java.......................................................................................................... 61

2.14. Основные компоненты пакетов swing и awt......................................................................................................... 65

2.15. Технологии Java и .Net............................................................................................................................................... 70

Краткие итоги по главе 2..................................................................................................................................................... 72

Задания..................................................................................................................................................................................... 73

Глава 3. Примитивные типы данных и операторы для работы с ними...................................................................... 74

3.1.Булевский (логический) тип......................................................................................................................................... 74

3.2.Целые типы, переменные, константы........................................................................................................................ 75

3.3.Основные операторы для работы с целочисленными величинами................................................................. 77

3.4.Вещественные типы и класс Math............................................................................................................................. 78

3.5.Правила явного и автоматического преобразования типа при работе с числовыми величинами......... 81

3.6. Оболочечные классы. Упаковка (boxing) и распаковка (unboxing)................................................................. 83

3.7.Приоритет операторов.................................................................................................................................................. 84

3.8.Типы-перечисления (enum).......................................................................................................................................... 85

Краткие итоги по главе 3..................................................................................................................................................... 88

Задания..................................................................................................................................................................................... 89

Глава 4. Работа с числами в языке Java............................................................................................................................... 91

4.1 Двоичное представление целых чисел..................................................................................................................... 91

Позиционные и непозиционные системы счисления.............................................................................................. 91

Двоичное представление положительных целых чисел....................................................................................... 92

Двоичное представление отрицательных целых чисел. Дополнительный код............................................. 93

Проблемы целочисленной машинной арифметики................................................................................................ 94

Шестнадцатеричное представление целых чисел и перевод из одной системы счисления в другую.... 95

4.2. Побитовые маски и сдвиги.......................................................................................................................................... 97

4.3. Двоичное представление вещественных чисел.................................................................................................. 100

Двоичные дроби............................................................................................................................................................. 100

Мантисса и порядок числа......................................................................................................................................... 100

Стандарт IEEE 754 представления чисел в формате с плавающей точкой*............................................... 102

Краткие итоги по главе 4.................................................................................................................................................. 106

Задания.................................................................................................................................................................................. 106

Глава 5. Управляющие конструкции.................................................................................................................................. 108

Составной оператор..................................................................................................................................................... 108

Условный оператор if................................................................................................................................................ 108

Оператор выбора switch.............................................................................................................................................. 112

Условное выражение …?... : ….................................................................................................................................. 112

Операторы инкремента ++ и декремента --............................................................................................................ 113

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

Оператор цикла while – цикл с предусловием.................................................................................................. 117

Оператор цикла do...while – цикл с постусловием...................................................................................... 118

Операторы прерывания continue, break, return, System.exit............................................................................... 119

Краткие итоги по главе 5.................................................................................................................................................. 122

Задания.................................................................................................................................................................................. 122

Глава 6. Начальные сведения об объектном программировании.............................................................................. 123

Наследование и полиморфизм. UML-диаграммы...................................................................................................... 123

Функции. Модификаторы. Передача примитивных типов в функции................................................................. 129

Локальные и глобальные переменные. Модификаторы доступа и правила видимости. Ссылка this........ 132

Передача ссылочных типов в функции. Проблема изменения ссылки внутри подпрограммы.................... 134

Наследование. Суперклассы и подклассы. Переопределение методов.............................................................. 139

Наследование и правила видимости. Зарезервированное слово super............................................................... 144

Статическое и динамическое связывание методов. Полиморфизм....................................................................... 146

Базовый класс Object......................................................................................................................................................... 147

Конструкторы. Зарезервированные слова super и this. Блоки инициализации................................................. 149

Удаление неиспользуемых объектов и метод finalize. Проблема деструкторов для сложно устроенных объектов 152

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

Правила совместимости ссылочных типов как основа использования полиморфного кода. Приведение и проверка типов.................................................................................................................................................................................................. 155

Рефакторинг.......................................................................................................................................................................... 157

Reverse engineering – построение UML-диаграмм по разработанным классам................................................ 160

Краткие итоги по главе 6.................................................................................................................................................. 166

Задания.................................................................................................................................................................................. 167

Глава 7. Важнейшие объектные типы................................................................................................................................ 169

Массивы................................................................................................................................................................................. 169

Коллекции, списки, итераторы........................................................................................................................................ 173

Работа со строками в Java. Строки как объекты. Классы String, StringBuffer и StringBuilder....................... 176

Работа с графикой............................................................................................................................................................... 180

Исключительные ситуации.............................................................................................................................................. 183

Обработка исключительных ситуаций................................................................................................................... 183

Иерархия исключительных ситуаций...................................................................................................................... 185

Объявление типа исключительной ситуации и оператор throw....................................................................... 186

Объявление метода, который может возбуждать исключительную ситуацию. Зарезервированное слово throws 187

Работа с файлами и папками........................................................................................................................................... 188

Работа с файлами и папками с помощью объектов типа File............................................................................ 188

Выбор файлов и папок с помощью файлового диалога..................................................................................... 192

Работа с потоками ввода-вывода.............................................................................................................................. 195

Краткие итоги по главе 7.................................................................................................................................................. 202

Задания.................................................................................................................................................................................. 203

Глава 8. Наследование: проблемы и альтернативы. Интерфейсы. Композиция................................................... 204

Проблемы множественного наследования классов. Интерфейсы......................................................................... 204

Отличия интерфейсов от классов. Проблемы наследования интерфейсов........................................................ 206

Пример на использование интерфейсов....................................................................................................................... 208

Композиция как альтернатива множественному наследованию.......................................................................... 210

Краткие итоги по главе 8.................................................................................................................................................. 212

Задания.................................................................................................................................................................................. 212

Глава 9. Дополнительные элементы объектного программирования на языке Java........................................... 214

Потоки выполнения (threads) и синхронизация.......................................................................................................... 214

Преимущества и проблемы при работе с потоками выполнения.................................................................... 214

Синхронизация по ресурсам и событиям............................................................................................................... 215

Класс Thread и интерфейс Runnable. Создание и запуск потока выполнения............................................ 217

Поля и методы, заданные в классе Thread.............................................................................................................. 219

Подключение внешних библиотек DLL.“Родные” (native) методы*.................................................................... 221

Краткие итоги по главе 9.................................................................................................................................................. 224

Задания.................................................................................................................................................................................. 225

Глава 10. Введение в сетевое программирование.......................................................................................................... 227

Краткая справка по языку HTML................................................................................................................................... 227

Апплеты................................................................................................................................................................................. 232

Сервлеты................................................................................................................................................................................ 234

Технология JSP – Java Server Pages................................................................................................................................ 237

Краткие итоги по главе 10................................................................................................................................................ 241

Задания.................................................................................................................................................................................. 242

Глава 11. Встроенные классы.............................................................................................................................................. 243

Виды встроенных классов................................................................................................................................................ 243

Вложенные (nested) классы и интерфейсы................................................................................................................... 243

Внутренние (inner) классы................................................................................................................................................ 244

Локальные (local) классы.................................................................................................................................................. 246

Анонимные (anonimous) классы и обработчики событий....................................................................................... 246

Анонимные (anonimous) классы и слушатели событий (listeners)......................................................................... 247

Краткие итоги по главе 11................................................................................................................................................ 250

Задания.................................................................................................................................................................................. 251

Глава 12. Компонентное программирование................................................................................................................... 252

Компонентная архитектура JavaBeans........................................................................................................................ 252

Мастер создания компонента в NetBeans.................................................................................................................... 253

Пример создания компонента в NetBeans – панель с заголовком......................................................................... 256

Добавление в компонент новых свойств...................................................................................................................... 259

Добавление в компонент новых событий..................................................................................................................... 261

Краткие итоги по главе 12................................................................................................................................................ 265

Задания.................................................................................................................................................................................. 266

Литература................................................................................................................................................................................. 267

Дополнительная литература........................................................................................................................................... 267

Введение

Языку Java посвящены сотни тысяч книг и учебных курсов. Поэтому, без сомнения, предлагаемый курс может рассматриваться только как краткое введение в данную область. Его назначение – дать основные представления о концепциях языка и современном состоянии дел. Java быстро развивается, из-за чего многие прежние представления оказываются устаревшими.

Данный курс основан на лекциях, читавшихся автором студентам кафедры вычислительной физики физического факультета СПбГУ, но был существенно переработан. Курс рассчитан на широкую аудиторию начинающих программистов, от школьников-старшеклассников до студентов старших курсов, а также людей, желающих самостоятельно научиться программировать на этом языке. Кроме того, курс может быть интересен даже опытным программистам, которые по каким-либо причинам не отслеживали изменения и нововведения в Java за последние годы. Курс содержит информацию об основных синтаксических конструкциях языка Java, особенностях и типичных ошибках их использования, а также сведения о современных средах разработки.

Одной из привлекательных особенностей языка Java с самого начала была бесплатность распространения базовых средств разработки (SDK – Software Development Kit) и исполняющей среды Java (виртуальной Java-машины). Однако компилятор, входящий в состав SDK, работал в режиме командной строки, то есть отставал идеологически по крайней мере на 20 лет от современных профессиональных компиляторов. В 2006 году корпорация Sun Microsystems пошла на беспрецедентный шаг – сделала бесплатными профессиональные средства разработки программного обеспечения.

Еще одним шагом Sun в направлении открытости программного обеспечения, в том числе - исходного кода, стала разработка платформы NetBeans. Это среда, основанная на принципах компонентного программирования. Она включает в себя как среду разработки, так и набор библиотечных компонентов ( Beans – “зёрна”. Игра слов: язык Java получил название по имени кофе, которое любили программисты, так что название компонентной модели Java Beans может быть расшифровано как “зёрна кофе Java”). Компонентная модель NetBeans – дальнейший шаг после Java Beans.

Среда разработки NetBeans может быть свободно загружено с сайта Sun и распространяется на условиях лицензии Sun Public License (SPL). Данная лицензия подразумевает, что всё программное обеспечение, написанное на условиях SPL, поставляется с открытым исходным кодом (source code). В настоящее время продукт Sun Java Studio Enterprise прекратил самостоятельное существование и стал расширением среды NetBeans – теперь это NetBeans Enterprise Pack.

Все примеры, приводящиеся в данной книге, разработаны и проверены в среде NetBeans версии 5.5 с JDK1.5.0_04.

 

Упоминаемые в данной книге названия

Java® и Solaris® - являются торговыми марками корпорации Sun Microsystems

Windows® - является торговой маркой корпорации Microsoft

MacOS®- является торговой маркой корпорации Apple


Глава 1. Общие представления о языке Java