- •Аннотация
- •Лекция 1. Что такое Java? История создания.
- •1. Что такое Java?
- •2. История создания Java
- •2.1. Сложности внутри Sun Microsystems
- •2.2. Проект Green
- •2.3. Компания FirstPerson
- •2.4. World Wide Web
- •2.5. Возрождение Oak
- •2.6. Java выходит в свет
- •3. История развития Java
- •3.1. Браузеры
- •3.2. Сетевые компьютеры
- •3.3. Платформа Java
- •4. Заключение
- •5. Контрольные вопросы
- •Аннотация
- •1. Основы объектно-ориентированного программирования
- •1.1. Методология процедурно-ориентированного программирования
- •1.2. Методология объектно-ориентированного программирования
- •1.3. Объекты
- •1.3.1. Состояние.
- •1.3.2. Поведение
- •1.3.3. Уникальность
- •1.4. Классы
- •1.4.1. Инкапсуляция
- •1.4.2. Полиморфизм
- •1.5. Типы отношений между классами
- •1.5.1. Агрегация
- •1.5.2. Ассоциация
- •1.5.3. Наследование
- •1.5.4. Метаклассы
- •1.6. Достоинства ООП
- •1.7. Недостатки ООП
- •1.8. Заключение
- •1.9. Контрольные вопросы
- •Аннотация
- •Лекция 3. Лексика языка
- •1. Лексика языка
- •1.1. Кодировка
- •1.2. Анализ программы
- •1.2.1. Пробелы
- •1.2.2. Комментарии
- •1.2.3. Лексемы
- •1.3. Виды лексем
- •1.3.1. Идентификаторы
- •1.3.2. Ключевые слова
- •1.3.3. Литералы
- •1.3.3.1. Целочисленные литералы
- •1.3.3.2. Дробные литералы
- •1.3.3.3. Логические литералы
- •1.3.3.4. Символьные литералы
- •1.3.3.5. Строковые литералы
- •1.3.3.6. Null литерал
- •1.3.3.7. Разделители
- •1.3.3.8. Операторы
- •1.3.3.9. Заключение
- •1.4. Дополнение: Работа с операторами
- •1.4.1. Операторы присваивания и сравнения
- •1.4.2. Арифметические операции
- •1.4.3. Логические операторы
- •1.4.4. Битовые операции
- •1.5. Заключение
- •1.6. Контрольные вопросы
- •Аннотация
- •Лекция 4. Типы данных
- •1. Введение
- •2. Переменные
- •3. Примитивные и ссылочные типы данных
- •3.1. Примитивные типы
- •3.2. Целочисленные типы
- •4. Дробные типы
- •5. Булевский тип
- •6. Ссылочные типы
- •6.1. Объекты и правила работы с ними
- •6.2. Класс Object
- •6.3. Класс String
- •6.4. Класс Class
- •7. Заключение
- •8. Заключение
- •9. Контрольные вопросы
- •Аннотация
- •Лекция 5. Имена. Пакеты
- •1. Введение
- •2. Имена
- •2.1. Простые и составные имена. Элементы.
- •2.2. Имена и идентификаторы
- •2.3. Область видимости (введение)
- •3. Пакеты
- •3.1. Элементы пакета
- •3.2. Платформенная поддержка пакетов
- •3.3. Модуль компиляции
- •3.3.1. Объявление пакета
- •3.3.2. Импорт-выражения
- •3.3.3. Объявление верхнего уровня
- •3.4. Уникальность имен пакетов
- •4. Область видимости имен
- •4.1. "Затеняющее" объявление (Shadowing)
- •4.2. "Заслоняющее" объявление (Obscuring)
- •5. Соглашения по именованию
- •6. Заключение
- •7. Контрольные вопросы
- •Аннотация
- •Лекция 6. Объявление классов
- •1. Введение
- •2. Модификаторы доступа
- •2.1. Предназначение модификаторов доступа
- •2.2. Разграничение доступа в Java
- •3. Объявление классов
- •3.1. Заголовок класса
- •3.2. Тело класса
- •3.3. Объявление полей
- •3.4. Объявление методов
- •3.5. Объявление конструкторов
- •3.6. Инициализаторы
- •4. Дополнительные свойства классов
- •4.1. Метод main
- •4.2. Параметры методов
- •4.3. Перегруженные методы
- •5. Заключение
- •6. Контрольные вопросы
- •Аннотация
- •Лекция 7. Преобразование типов
- •1. Введение
- •2. Виды приведений
- •2.1. Тождественное преобразование
- •2.2. Преобразование примитивных типов (расширение и сужение)
- •2.3. Преобразование ссылочных типов (расширение и сужение)
- •2.4. Преобразование к строке
- •2.5. Запрещенные преобразования
- •3. Применение приведений
- •3.1. Присвоение значений
- •3.2. Вызов метода
- •3.3. Явное приведение
- •3.4. Оператор конкатенации строк
- •3.5. Числовое расширение
- •3.5.1. Унарное числовое расширение
- •3.5.2. Бинарное числовое расширение
- •4. Тип переменной и тип ее значения
- •5. Заключение
- •6. Контрольные вопросы
- •Аннотация
- •1. Введение
- •2. Статические элементы
- •3. Ключевые слова this и super
- •4. Ключевое слово abstract
- •5. Интерфейсы
- •5.1. Объявление интерфейсов
- •5.2. Реализация интерфейса
- •5.3. Применение интерфейсов
- •6. Полиморфизм
- •6.1. Поля
- •6.2. Методы
- •6.3. Полиморфизм и объекты
- •7. Заключение
- •8. Контрольные вопросы
- •Аннотация
- •Лекция 9. Массивы
- •1. Введение
- •2. Массивы, как тип данных в Java
- •2.1. Объявление массивов
- •2.2. Инициализация массивов
- •2.3. Многомерные массивы
- •2.4. Класс массива
- •3. Преобразование типов для массивов
- •3.1. Ошибка ArrayStoreException
- •3.2. Переменные типа массив, и их значения
- •4. Клонирование
- •4.1. Клонирование массивов
- •5. Заключение
- •6. Контрольные вопросы
- •Аннотация
- •Лекция 10. Операторы и структура кода
- •1. Управление ходом программы
- •2. Нормальное и прерванное выполнение операторов
- •3. Блоки и локальные переменные
- •4. Пустой оператор
- •5. Метки
- •6. Оператор if
- •7. Оператор switch
- •8. Управление циклами
- •8.1. Цикл while
- •8.2. Цикл do
- •8.3. Цикл for
- •9. Операторы break и continue
- •9.1. Оператор continue
- •9.2. Оператор break
- •10. Именованные блоки
- •11. Оператор return
- •12. Оператор synchronized
- •13.1. Причины возникновения ошибок
- •13.2. Обработка исключительных ситуаций
- •13.2.1. Конструкция try-catch
- •13.2.2. Конструкция try-catch-finally
- •13.3. Использование оператора throw
- •13.4. Обрабатываемые и необрабатываемые исключения
- •13.5. Создание пользовательских классов исключений
- •13.6. Переопределение методов и исключения
- •13.7. Особые случаи
- •14. Заключение
- •15. Контрольные вопросы
- •Аннотация
- •Лекция 11. Пакет java.awt
- •1. Введение
- •2. Апплеты
- •2.1. Тег HTML <Applet>
- •2.2. Передача параметров
- •2.3. Контекст апплета
- •2.4. Отладочная печать
- •2.5. Порядок инициализации апплета
- •2.6. Перерисовка
- •2.7. Задание размеров графических изображений
- •2.8. Простые методы класса Graphics
- •2.9. Цвет
- •2.9.1. Методы класса Color
- •2.10. Шрифты
- •2.10.1. Использование шрифтов
- •2.10.2. Позиционирование и шрифты: FontMetrics
- •2.10.3. Использование FontMetrics
- •2.10.4. Центрирование текста
- •3. Базовые классы
- •4. Основные компоненты
- •5. Менеджеры компоновки
- •6. Окна
- •7. Меню
- •8. Обработка событий
- •8.1. Рисование "каракулей" в Java
- •8.2. Рисование "каракулей" с использованием встроенных классов
- •9. Заключение
- •10. Контрольные вопросы
- •Аннотация
- •Лекция 12. Потоки выполнения. Синхронизация
- •1. Введение
- •2. Многопоточная архитектура
- •3. Базовые классы для работы с потоками
- •3.1. Класс Thread
- •3.2. Интерфейс Runnable
- •3.3. Работа с приоритетами
- •3.4. Демон-потоки
- •4. Синхронизация
- •4.1. Хранение переменных в памяти
- •4.2. Модификатор volatile
- •4.3. Блокировки
- •5. Методы wait(), notify(), notifyAll() класса Object
- •6. Контрольные вопросы
- •Аннотация
- •Лекция 13. Пакет java.lang.
- •1. Введение
- •2. Object
- •3. Class
- •4. Wrapper Classes
- •4.1. Integer
- •4.2. Character
- •4.3. Boolean
- •4.4. Void
- •5. Math
- •6. Строки
- •6.1. String
- •6.2. StringBuffer
- •7. Системные классы
- •7.1. ClassLoader
- •7.2. SecurityManager - менеджер безопасности
- •7.3. System
- •7.4. Runtime
- •7.5. Process
- •8. Потоки исполнения
- •8.1. Runnable
- •8.2. Thread
- •8.3. ThreadGroup
- •9. Исключения
- •10. Заключение
- •11. Контрольные вопросы
- •Аннотация
- •Лекция 14. Пакет java.util
- •1. Введение
- •2. Работа с датами и временем
- •2.1. Класс Date
- •2.2. Классы Calendar и GregorianCalendar
- •2.3. Класс TimeZone
- •2.4. Класс SimpleTimeZone
- •3. Интерфейс Observer и класс Observable
- •4. Коллекции
- •4.1. Интерфейсы
- •4.1.1. Интерфейс Collection
- •4.1.2. Интерфейс Set
- •4.1.3. Интерфейс List
- •4.1.4. Интерфейс Map
- •4.1.5. Интерфейс SortedSet
- •4.1.6. Интерфейс SortedMap
- •4.1.7. Интерфейс Iterator
- •4.2. Aбстрактные классы используемые при работе с коллекциями.
- •4.3. Конкретные классы коллекций
- •4.4. Класс Collections
- •5. Класс Properties
- •6. Интерфейс Comparator
- •7. Класс Arrays
- •8. Класс StringTokenizer
- •9. Класс BitSet
- •10. Класс Random
- •11. Локализация
- •11.1. Класс Locale
- •11.2. Класс ResourceBundle
- •12. Заключение
- •13. Контрольные вопросы
- •Аннотация
- •Лекция 15. Пакет java.io
- •1. Система ввода/вывода. Потоки данных (stream)
- •1.1. Классы InputStream и OutputStream
- •1.2. Классы-реализации потоков данных
- •1.2.1. Классы ByteArrayInputStream и ByteArrayOutputStream
- •1.2.2. Классы FileInputStream и FileOutputStream
- •1.2.3. PipedInputStream и PipedOutputStream
- •1.2.4. StringBufferInputStream
- •1.2.5. SequenceInputStream
- •1.3. Классы FilterInputStreeam и FilterOutputStream. Их наследники.
- •1.3.1. BufferedInputStream и BufferedOutputStream
- •1.3.2. LineNumberInputStream
- •1.3.3. PushBackInputStream
- •1.3.4. PrintStream
- •1.3.5. DataInputStream и DataOutputStream
- •2. Serialization
- •2.1. Версии классов
- •3. Классы Reader и Writer. Их наследники.
- •4. Класс StreamTokenizer
- •5. Работа с файловой системой.
- •5.1. Класс File
- •5.2. Класс RandomAccessFile
- •6. Заключение
- •7. Контрольные вопросы
- •Аннотация
- •Лекция 16. Введение в сетевые протоколы
- •1. Основы модели OSI
- •2. Physical layer (layer 1)
- •3. Data layer (layer 2)
- •3.1. LLC sublayer.
- •3.2. MAC sublayer.
- •4. Network layer (layer 3)
- •4.1. Class A
- •4.2. Class B
- •4.3. Class CClass DClass E
- •5. Transport layer (layer 4)
- •6. Session layer (layer 5)
- •7. Presentation layer (layer 6)
- •8. Application layer (layer 7)
- •9. Утилиты для работы с сетью
- •9.1. IPCONFIG (IFCONFIG)
- •9.3. Ping
- •9.4. Traceroute
- •9.5. Route
- •9.6. Netstat
- •9.7. Задания для практического занятия
- •10. Пакет java.net
- •11. Заключение
- •12. Контрольные вопросы
Стр. 22 из 26 |
Лексика языка |
// Оператор >> |
|
-21 >> 00 = 11111111111111111111111111101011 = -21 |
|
-21 >> 01 = 11111111111111111111111111110101 = -11 |
|
-21 >> 02 = 11111111111111111111111111111010 = -6 |
|
-21 >> 03 = 11111111111111111111111111111101 = -3 |
|
-21 >> 04 = 11111111111111111111111111111110 = -2 |
|
-21 >> 05 = 11111111111111111111111111111111 = -1 |
|
// Оператор >>> |
|
-21 >>> 00 = 11111111111111111111111111101011 = -21 |
|
-21 >>> 01 = 01111111111111111111111111110101 = 2147483637 |
|
-21 >>> 02 = 00111111111111111111111111111010 = 1073741818 |
|
-21 >>> 03 = 00011111111111111111111111111101 = 536870909 |
|
-21 >>> 04 = 00001111111111111111111111111110 = 268435454 |
|
-21 >>> 05 = 00000111111111111111111111111111 = 134217727 |
|
... |
|
-21 >>> 24 = 00000000000000000000000011111111 = 255 |
|
-21 >>> 25 = 00000000000000000000000001111111 = 127 |
|
-21 >>> 26 = 00000000000000000000000000111111 = 63 |
|
-21 >>> 27 = 00000000000000000000000000011111 = 31 |
|
-21 >>> 28 = 00000000000000000000000000001111 = 15 |
|
-21 >>> 29 = 00000000000000000000000000000111 = 7 |
|
-21 >>> 30 = 00000000000000000000000000000011 = 3 |
|
-21 >>> 31 = 00000000000000000000000000000001 = 1 |
|
Как видно из примеров, эти операции аналогичны делению на 2n. Причем, если для положительных аргументов с ростом n результат закономерно стремится к 0, то для отрицательных предельным значением служит -1.
1.5. Заключение
В этой главе были рассмотрены основы лексического анализа программ Java. Для их записи применяется универсальная кодировка Unicode, позволяющая использовать любой язык помимо традиционного английского. Специальная конструкция позволяет задавать любой символ Unicode с помощью лишь ASCII-символов.
Компилятор выделяет из текста программы «пробелы» (были рассмотрены все символы, которые рассматриваются как пробелы) и комментарии, которые полностью удаляются из кода (были рассмотрены все виды комментариев, в частности комментарий разработчика).
Пробелы и все виды комментариев служат для разбиения текста программы на лексемы. Были рассмотрены все виды лексем, в том числе все виды литералов.
В дополнении были рассмотрены особенности применения различных операторов.
1.6. Контрольные вопросы
3-1. Как записать в Java-программе символ с кодом 514? a.) ‘514’
b.) \u0546
Программирование на Java
Rendered by www.RenderX.com
Контрольные вопросы |
Стр. 23 из 26 |
c.) \u222
d.) \u0222
Ответ a) некорректен, так как внутри одинарных кавычек может стоять ровно один символ, либо специальная последовательность, начинающаяся с обратного слеша. Причем если эта последовательность начинается с \u, то затем должны стоять 4 шестнадцатеричные цифры, поэтому ответ c) также некорректен. В примере b) задается символ с кодом 0x0546=1350.
3-2. Сколько пробелов в следующем примере кода:
int x = 3; int y=1; int z = x+y;
a.) 7
b.) 8
c.) 9
d.) 11
Правильный ответ 9: 5 пробелов, 1 перенос строки, 3 табуляции.
3-3. Сколько комментариев в следующем примере кода:
int x = 0; /* text // text /* int y=1; // text */ // text */
a.) 1 блочный, 0 строчных
b.) 1 блочный, 1 строчный
c.) 1 блочный, 2 строчных
d.) 2 блочных, 3 строчных
Правильный ответ b). Блочный комментарий начинается сразу после инициализации поля x, а закрывающая комбинация */ находится лишь во второй строке после первого слова text. Сразу после нее начинается строчный комментарий.
3-4. Что такое комментарий разработчика и для чего он служит?
a.) Комментарий разработчика записывается так же, как и блочный, но начинается с комбинации /**. С помощью утилиты javadoc можно автоматически сгенерировать документацию в формате HTML, описывающую поля, методы, конструкторы, классы и интерфейсы, пакеты. Поскольку текст комментария оказывается в HTML-странице, допускается применение тегов, кроме <hr> и <h1>..<h6>, которые используются самими javadoc. Кроме этого, поддерживается ряд специальных тегов, начинающихся с @, для вставки специальной информации.
Программирование на Java
Rendered by www.RenderX.com
Стр. 24 из 26 |
Лексика языка |
3-5. Какие из перечисленных идентификаторов являются корректными?
a.) |
abc |
b.) |
1ab |
c.) |
_bc |
d.) _1c $ac
e.) |
$ac |
f.) |
for_ |
g.) |
Int |
h.) |
byte |
Идентификатор 1ab некорректен, так как начинается с цифры. Идентификатор byte некорректен, так как совпадает с зарезервированным словом byte. Остальные идентификаторы корректны. Использование знака доллара ($ac) рекомендовано только при автоматической генерации кода. Идентификатор Int также корректен, так как отличается от ключевого слова int регистром первой буквы.
3-6. Являются ли следующие слова ключевыми:
a.) true
b.) goto
c.) null
d.) const
e.) false
Слова goto и const являются ключевыми, но запрещены для использования. Это сделано в силу того, что эти слова распространены в других языках программирования, но не поддерживаются Java.
Слова true, false, null являются литералами, а не ключевыми словами.
3-7. Равны ли следующие числа:
a.) 5 и 05
b.) 9 и 09
c.) 10 и 010
d.) 0x5A и 90L
Программирование на Java
Rendered by www.RenderX.com
Контрольные вопросы |
Стр. 25 из 26 |
Числа 5 и 05 равны. Число 09 некорректно, компилятор выдаст ошибку. Число 010 равно 8 и не равно 10. Число 0x5A равно 90, а значит и 90L.
3-8. Какой будет результат следующих действий?
1/0 1./0 1/0. 1./0. ‘\n’+’\r’
a.) Операция 1/0 приведет к арифметической ошибке. Следующие 3 операции будут иметь результат POSITIVE_INFINITY. Последнее сложение равняется
23.
3-9. Чему будет равно следующее выражение и значение переменной x после вычислений?
int x=0; print(++x==x++);
a.) Выражение истинно. Левая часть его равна 1, так как переменная x увеличит свое значение на 1 до участия в сравнении. Правая часть также равна 1, так как переменная x еще раз увеличит свое значение уже после сравнения. После вычислений значение переменной равно 2.
3-10. Чему будет равно следующее выражение и значения переменных x и y после вычислений?
int x=0, y=0; print((++x==1) || (y++==1));
a.) Выражение истинно, поскольку истинен его первый аргумент. Поскольку применен двойной оператор «или», то второй аргумент вычисляться не будет. Значит после вычислений значение переменной x равно 1, y – 0.
Программирование на Java
Rendered by www.RenderX.com
Программирование на Java ()
Программирование на Java
Rendered by www.RenderX.com