Вы находитесь на странице: 1из 20

Раздел 1.

Введение
Урок 1. Как проходить курс?
Урок 2. Что такое Java?
Урок 3. Установка среды разработки
 Установите NetBeans IDE.

Раздел 2.

Основы программирования
на Java
Урок 1. Hello World
 Выведите в консоль сообщение: «Привет, мир!».

 Выведите в JOptionPane сообщение: «Я прохожу курс по Java!».

 Запустите написанное приложение в командной строке, перед этим его в командной


строке скомпилировав.

 Создайте jar-файл и проверьте его работу.


Урок 2. Переменные и их типы
 Создайте строковую переменную со значением: «53.5»

 Преобразуйте эту строковую переменную в переменную типа double

 Выведите получившуюся переменную в консоль

 Создайте переменную типа char, в которую поместите первую букву Вашего имени

 Выведите её в консоль.

 Создайте целую переменную с именем age и присвойте ей значение Вашего


возраста.

 Выведите её в консоль.

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


 Создайте две переменных типа double и присвойте им какие-нибудь значения.

 Выполните с ними операции сложения, вычитания, умножения и деления.

 Выполните операцию инкремента и декремента надо одной из переменных.

 Выведите результат в консоль.

 Прибавьте к первой переменной 5 и запишите результат в эту же переменную (полной


записью и сокращённой).

 Выведите результат в консоль.

 Создайте целую переменную и присвойте ей значение 8.

 Выведите остаток от деления на 3 в консоль.

Урок 4. Операции сравнения


 Создайте 2 переменных типа double с произвольными значениями.

 Выведите в консоль следующие операции сравнения между ними: >, <, >=, <=, !=, ==

Урок 5. Логические операции


 Создайте 3 переменных типа Boolean: true, false, false.

 2) Сделайте логические выражения из 3-х переменных, чтобы:


А) Обязательно был && и в результате было true (решение в качестве примера:
«true && !(false && false)» – только переменные подставляйте, а не значения).
Б) Обязательно был || и в результате было false.
В) Обязательно был ^ и в результате было true.
Урок 6. Битовые операции
 Создайте две целых переменных (5 и 10).

 Преобразуйте их в двоичный код и выведите их.

 Выполните между ними следующие операции: &, |, ^.

 С первой переменной сделайте ещё так же следующие операции: ~, >>1, <<1.

Примечание: перед просмотром результатов побитовых операций обязательно


рассчитайте его самостоятельно, а потом просто сравните с правильным.

Урок 7. Условный оператор


 Используя JOptionPane, попросите пользователя ввести первое число.положительное
число.

 Если пользователь не ввёл ничего, то напишите ему об этом, используя JOptionPane.

 Используя JOptionPane, попросите пользователя ввести второе число, отличное от 0.

 Если пользователь не ввёл ничего, то напишите ему об этом, используя JOptionPane.

 Если пользователь ввёл 0, то выведите в JOptionPane сообщение: «Результат:


бесконечность».

 Если пользователь ввёл не 0, то выведите через JOptionPane результат деления


первого числа на второе.

Примечание: Если пользователь ввёл некорректные данные (ничего не ввёл, либо


какую-нибудь строку вместо числа), то завершайте программу.

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


 Попросите пользователя ввести положительное целое число через JOptionPane.

 Обработайте некорректные данные (ничего не ввёл, отрицательное число, 0, не


целое число), выведя соответствующие уведомления об ошибке.

 Вычислите сумму всех чисел от 1 до числа, введённого пользователем, используя


цикл for.

 Выведите результат пользователю через JOptionPane.

Пример: Пользователь ввёл 7, значит, надо вычислить сумму: 1+2+3+4+5+6+7=?


Урок 9. Оператор цикла while
 Попросите пользователя ввести неотрицательно целое число через JOptionPane.

 Обработайте некорректные данные (ничего не ввёл, отрицательное число, не целое


число), выведя соответствующие уведомления об ошибке.

 Вычислите факториал числа, введённого пользователем, используя цикл while.

 Выведите результат пользователю через JOptionPane.

Примечание: Факториал 0 = 1, факторил 1 = 1, факториал 2 = 1 * 2, факториал 3 = 1 * 2 *


3, факториал числа n = 1 * 2 * 3 * … * (n – 1) * n.

Урок 10. Оператор цикла do-while


 Используя бесконечный цикл do-while, заставьте пользователя ввести положительное
целое число.

Примечание: Если пользователь вводит что-то некорректное, то сообщайте ему об этом


и просите снова ввести положительное целое число. И так до бесконечности, пока он не
введёт правильный вариант. Как только он вводит правильный вариант, выходите из
цикла, и выводите JOptionPane с сообщением: «Спасибо!»

Урок 11. Оператор switch-case


 Попросите пользователя ввести первое число через JOptionPane, а затем аналогично
второе.

 Попросите пользователя ввести одну из операций: «+», «-», «*», «/».

 Используя switch-case выполните соответствующую операцию между двумя


введёнными числами и выведите результат через JOptionPane.

Примечание: При вводе некорректных данных выведите информацию об ошибке в


консоль и завершите программу.

Урок 12. Одномерные массивы


 Создайте массив из 5 чисел типа double.

 Используя цикл while, выведите сумму всех чисел массива.

 Используя цикл for, выведите произведение всех чисел массива.


Урок 13. Многомерные массивы
 Создайте двумерный массив размера 2x3 целых чисел.

 Используя цикл for, вычислите сумму всех чисел.

 Создайте новый одномерный массив из двух элементов.

 Используя цикл for, вычислите сумму каждой строки первого массива и запишите
результат в новый массив.

Раздел 3.

Объектно-ориентированное
программирование в Java
Урок 1. Что такое ООП?
Урок 2. Создание класса
 Создайте класс User со следующими полями, подобрав правильный тип данных: id,
логин, пароль.

 Создайте конструктор класса User, приняв все 3 параметра для полей.

 Присвойте полям полученные параметры.

 Создайте два объекта класса User с различными входными параметрами.

 Выведите в консоль все поля обоих объектов в следующем виде (можно с


использованием массива и цикла): «id=5; логин=admin; password=abc»

Примечание: id – это уникальный идентификатор. Он всегда является только целым


положительным числом.
Урок 3. Методы и их перегрузка
 Используя класс User из предыдущего упражнения, добавьте в нём методы get и set
для всех полей.

 Добавьте ещё один метод set для каждого поля (сделав, по сути, перегрузку методов),
но уже без параметра. Внутри метода должно присваиваться значение по умолчанию
(id = 0; login=”guest”; password=””).

 Создайте объект класса User.

 Воспользуйтесь методами set и get для установки новых значения для каждого поля и
получения результат.

Урок 4. Модификаторы доступа


 Сделайте все поля в классе User из предыдущего упражнения private.
 Убедитесь, что доступа из основного класса к этим полям теперь нет (должна
быть ошибка при попытке запустить программу).
 Используйте метод set для установки нового логина у объекта User.
 Используйте метод get для получения нового логина.

Урок 5. Статические поля и методы


 Создайте класс MyMath.
 Создайте 4 статических метода в нём, которые будут возвращать
соответствующие значения: add (сложение), sub (вычитание), mult (умножение)
и div (деления).
 Проверьте все 4 метода, выводя результат их работы в консоль.
 Добавьте статическое private-поле в класс MyMath, в котором будет храниться
количество вызовов статических методов.
 Инкрементируйте статическое поле при каждом вызове метода.
 Создайте статический метод get для этого счётчика.
 Выведите в основной программе значение этого счётчика до вызова
статических методов и после.
Урок 6. Наследование
 Создайте класс UserSocial – наследника класса User из предыдущих
упражнений.
 Добавьте в классе UserSocial поле с именем пользователя и его возрастом,
сделав так же методы get и set, а также реализовав конструктор с пятью
параметрами (id, логин, пароль, имя, возраст), в котором присвоить все
значения полям, используя так же super().
 Создайте класс WebMaster – наследника класса User.
 Добавьте поле с адресом сайта, сделав так же методы get и set, плюс
конструктор по аналогии со 2-м пунктом.
 Создайте объект класса UserSocial и объект класса WebMaster.
 Выведите у обоих объектов результат работы методов get и set, доставшиеся
по наследству от User.
 Выведите результат работы новых методов get и set у каждого из объектов.

Урок 7. Внутренние классы


 Создайте класс MyLine.
 Создайте внутренний класс MyPoint с public-полями x и y.
 Добавьте public-поля pointStart, pointEnd, в которых будут храниться объекты
класса Point.
 Создайте конструктор в классе MyLine, в котором должно быть 4 параметра: x
и y начальной точки и x и y конечной точки.
 Внутри конструктора MyLine создайте на их основе два объекта Point и
запишите их в соответствующие поля.
 Создайте объект класса MyLine.
 Выведите в основном классе в консоль координаты начальной и конечной
точки в таком виде: «Начальная точка (5, 7); Конечная точка (10, 3);».
Урок 8. Абстрактные классы и методы
 Сделайте абстрактным класс User из предыдущих упражнений, при этом
WebMaster и UserSocial оставьте без изменений на данном этапе.
 Добавьте в класс User абстрактный метод printUser() (public и без
возвращаемого значения).
 Убедитесь, что при запуске выдаётся ошибка и требование реализовать
абстрактный метод в классах-наследниках.
 Реализуйте printUser() в WebMaster и UserSocial, выведя в этом методе в
консоль информацию о пользователе (в свободном стиле, но обязательно,
чтобы все поля объекта были указаны).

Урок 9. Интерфейсы
 Создайте интерфейс PrintData, в котором укажите один метод: printUser().
 Укажите этот интерфейс в классе User из предыдущего упражнения.
 Убедитесь, что всё по-прежнему работает.

Урок 10. Анонимные классы


 Создайте объект класса User, реализовав интерфейс PrintData из прошлого
упражнения.
 Вызовите у получившегося объекта метод printUser().
Примечание: Поскольку класс User является абстрактным, необходимо будет
воспользоваться анонимным классом.

Урок 11. Обобщённые классы и методы


 Создайте класс Shop с обобщённым типом данных (один параметр).
 Добавьте поле с массивом с обобщённым типом (то есть, это может быть, как
массив целых чисел, так и массив из строк).
 Создайте конструктор, принимающий этот массив и записывающий его в поле.
Разумеется, метод принимать должен так же обобщённый тип данных.
 Создайте метод printObject(), который выведет в консоль всё поле.
 Создайте объект и запишите в него массив целых чисел (для примера, пусть
это будут id товаров в магазине).
 Создайте ещё один объект и запишите в него массив строк (для примера,
пусть это будут названия товаров в магазине).
 Вызовите у обоих объектов метод printObject().

Урок 12. Методы toString() и clone()


 Добавьте в класс UserSocial и WebMaster методы toString() и clone(),
реализовав при этом интерфейс Cloneable.
 В методе toString() верните строку с информацией об объекте.
 В методе clone() верните новый объект на основе клонируемого.
 Создайте объекты обоих классов и воспользуйтесь у них методами toString,
выведя объект в консоль, и clone(), выведя новый объект так же в консоль.

Урок 13. Лямбда-выражения


 Создайте массив целых чисел, например, из 10 элементов.
 Используя лямбда-выражение, отсортируйте массив по убыванию.
 Выведите массив, используя цикл foreach.

Урок 14. Рекурсия


 Используя рекурсию, выведите все числа от 1 до 100.
 Используя рекурсию, найдите сумм цифр произвольного целого числа (для
примера, можете взять 1539).
Раздел 4.

Исключения в Java
Урок 1. Основы исключений
 Создайте массив целых чисел из 5 элементов.
 Обратитесь к элементу с индексом 5.
 Посмотрите, что за исключение выскакивает при работе программы.
 Перехватите его с помощью try-catch и выведите в блоке catch в консоль
уведомление об ошибке.
 Запустите программу и проанализируйте отличия.

Урок 2. Блок finally


 Дополните программу из предыдущего упражнения блоком finally.
 В блоке finally выведите в консоль сообщение: «Завершение программы».

Урок 3. Генерация исключений


 Попросите пользователя ввести число, используя JOptionPane.
 Если пользователь ввёл число, то выведите в JOptionPane сообщение:
«Спасибо!».
 Если пользователь ничего не ввёл, либо ввёл не число, то выбросить
исключение, в catch-блоке которого через JOptionPane вывести сообщение:
«Некорректный ввод».
Урок 4. Обработка нескольких исключений
 Создайте массив целых чисел из 5-ти элементов.
 Используя JOptionPane, попросите указать пользователя индекс элемента,
который он хочет посмотреть.
 Если пользователь указывает индекс отрицательный, то сгенерируйте
исключение и обработайте его.
 Если пользователь ввёл некорректный индекс, то Java автоматически
выбросит исключение, которое Вам так же нужно перехватить и обработать.
 Если пользователь ввёл корректный индекс, то в JOptionPane вывести
соответствующий этому индексу элемент массива.
Примечание: В качестве обработки исключения выводите соответствующее
сообщение в JOptionPane.

Урок 5. Пользовательские исключения


 Создайте 2 класса-наследника от Exception: NullException и
NoNumberException.
 В классе NullException реализуйте метод toString(), в котором верните строку:
«Вы ничего не ввели».
 В классе NoNumberException реализуйте метод toString(), в котором верните
строку: «Вы ввели не число».
 Доработайте программу из упражнения к уроку «Генерация исключений»,
чтобы в зависимости от ошибки выбрасывалось соответствующее исключение.
 В блоке catch выведите в JOptionPane сам объект исключения.
Раздел 5.

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


Урок 1. Класс String
 Попросите пользователя ввести строку.
 Выведите в консоли следующие данные: строку от пользователя в верхнем
регистре, в нижнем регистре, подстроку от 2-го символа до 5-го включительно
(2-й символ по счёту, а индекс у него будет 1, что надо учесть), результат
поиска вхождения в строке строки «hello».
Примечание: Обработайте все исключительные ситуации с использованием try-
catch.

Урок 2. Класс Math


 Попросите пользователя, используя JOptionPane, ввести радиус окружности.
 Выведите через JOptionPane площадь окружности (площадь считается по
формуле: S = π * ).
 Задайте переменную double со значением сумму на счёте. Например, 9895.
 Задайтесь процентной годовой ставкой типа double, например, 5.7%.
 Вычислите прибыль по вкладу в течение года и выведите её в консоль,
округлив до 2-х значащих цифр после запятой.
Примечание: Прибыль считается так: прибыль = сумма * процент / 100.
Урок 3. Класс HashMap
 Создайте HashMap<String, Integer>, где ключом будет являться имя человека,
а значением – его возраст.
 Добавьте в HashMap несколько элементов и выведите их.
 Увеличьте возраст на 4 у второго человека в HashMap (используя метод get(),
разумеется, а не просто заменив начальное значение).
 Выведите повторно все элементы HashMap и убедитесь, что возраст
действительно изменился на 4 у второго человека.

Урок 4. Класс ArrayList


 Создайте объект класса ArrayList<String>, в котором будут находиться логины
пользователей.
 Добавьте несколько элементов в ArrayList.
 Выведите весь ArrayList, используя цикл.
 Замените второй элемент по счёту на другой.
 Выведите весь ArrayList, используя лямбда-выражения.

Урок 5. Классы для работы с датой и временем


 Создайте объект класса Date.
 Создайте переменную подходящего типа, в которую поместите количество
миллисекунд, прошедших с 01.01.1970 00:00:00.
 Выведите в консоль эту переменную.
 Используя JOptionPane, попросите пользователя ввести дату в заданном
формате.
 Превратите строку, введённую пользователем, в объект Date.
 Увеличьте год на единицу.
 Выведите в JOptionPane получившуюся дату в формате: dd.MM.YYYY.
Примечание: Не забудьте обработать исключительные ситуации, когда
пользователь ничего не вводит или вводит неправильный формат. В качестве
обработки выводите информацию об ошибке в JOptionPane и завершайте
программу.
Урок 6. Другие классы
 Научитесь работать со справочником.
 Изучите по справочнику два класса: Number и его дочерний класс Integer.

Раздел 6.

Создание пользовательского
интерфейса
Урок 1. Основы создания пользовательского интерфейса
Урок 2. Вывод окна
 Создайте объект окна.
 Установите размеры 800 на 600 и позицию с координатами 100 и 200.
 Сделайте так, чтобы пользователь не мог менять размеры окна.
 Сделайте так, чтобы при закрытии окна программа автоматически
завершалась.

Урок 3. Элементы пользовательского интерфейса

 Создайте окно с параметрами на своё усмотрение.


 Выведите в окне следующие элементы: метку, текстовое поле, кнопку, чекбокс,
радио-кнопку.
Урок 4. Компоновка элементов
 Создайте форму со следующими элементами: текстовое поле с именем и e-
mail, 3 чекбокса с текстом: «HTML», «JavaScript» и «PHP» и кнопкой
«Подписаться».
 Аккуратно всё выровняйте, используя компоновщики Java.

Урок 5. Обработчики событий


 Создайте 3 кнопки с текстом: «Красный», «Белый» и «Зелёный».
 При клике по кнопке должен меняться цвет окна на соответствующий нажатой
кнопке.
Примечание: В справочнике узнайте, как можно изменить цвет фона у объекта
JPanel. В будущих уроках Вы об этом ещё узнаете, но крайне важно уже сейчас
научиться самостоятельно работать со справочником.

Урок 6. Работа с меню


 Создайте меню с пунктом «Вид».
 Создайте подменю «Размер окна» в меню «Вид».
 Добавьте пункты «640x480», «800x600» и «1024x768» в подменю «Размер
окна».
 При клике по пунктам из подменю «Цвет фона» должен устанавливаться
соответствующий размер окна.

Урок 7. Обработка событий мыши


 Создайте пустое окно.
 При клике мышью в произвольной точке окна в этом месте должна появиться
кнопка.
 Если кнопок будет уже 10 штук, то должно выводиться сообщение через
JOptionPane: «Максимум 10 кнопок!»

Урок 8. Обработка событий клавиатуры


 Создайте окно с одной кнопкой.
 Обработайте стрелки на клавиатуре так, чтобы кнопка двигалась в сторону
соответствующей нажатой клавише.
Урок 9. Создание пользовательского компонента
 Создайте класс компонента текстового поля.
 В конструкторе должна задаваться в текстовом поле строка по умолчанию.
 При клике по полю эта запись должна стираться.
 Если пользователь ничего не ввёл, а фокус с поля был утерян, то должна
восстановиться строка по умолчанию.
Примечание: В HTML подобную функцию делается атрибут placeholder. Суть
состоит в том, чтобы в поле сразу написать то, что должен ввести пользователь,
например, «Логин». А при клике этот текст должен стираться. Если же
пользователь переключился на другое элемент (событие «Потеря фокуса») и при
этом ничего не заполнил в поле, то эта надпись, например, «Логин», должна
восстановиться.

Раздел 7.

Работа с графикой
Урок 1. Основы рисования в Java
 Создайте окно, в котором выведите прямоугольник с параметрами,
полученными от пользователя с помощью JOptionPane.
 Обработайте все исключительные ситуации по некорректному вводу данных,
выводя в консоли сообщения об ошибках.
Примечание: JOptionPane надо будет вызвать 4 раза: для координаты X, Y,
ширины и высоты прямоугольника.
Урок 2. Рисование фигур
 Нарисуйте в окне человечка: голову, туловище, руки, ноги, глаза нос, рот, уши.
 С помощью цикла и случайных чисел нарисуйте штук 50 веснушек на щёках.
Примечание: Веснушки должны быть только в конкретной области: на щёках.

Урок 3. Анимация
 Сделайте бесконечную анимацию человечка из предыдущего упражнения: он должен
двигаться слева направо, а когда достигнет правого края, должен начать двигаться
справа налево, и так до закрытия окна.

Урок 4. Вывод изображения из файла


 Создайте форму с текстовым полем для URL-адреса и кнопкой «Вывести».
 После клика по кнопке выведите изображение из URL, введённого
пользователем, рядом с формой.
 Обработайте все исключительные ситуации: пользователь ничего не ввёл,
URL не существует, URL ведёт не на изображение.
Примечание: В качестве обработки исключений подойдёт вывод в JOptionPane
соответствующих сообщений.

Урок 5. Рисование компонента


 Создайте свою собственную кнопку.
 Кнопка должна иметь форму окружности: заливка красная, а контур чёрный.
 Размер окружности должен определяться текстом на ней.
 При наведении курсора мыши цвет заливки окружности должен измениться на
жёлтый.
 При отводе курсора мыши цвет заливки окружности должен вернуться
обратной на красный.
Раздел 8.

Работа с внешними ресурсами


Урок 1. Получение информации о файле
 Через JOptionPane попросите пользователя указать путь к директории.
 Выведите размер этой директории через JOptionPane.
Примечание: Поскольку язык Java способен определить только размер файла, то
Вам придётся использовать рекурсию, каждый раз проверяя: каталог передан или
файл. Если файл, то возвращается его размер, а если каталог, то он передаётся
в качестве параметра на вызов этого же метода.

Урок 2. Чтение из файла


 Создайте текстовый файл с произвольным текстом.
 Создайте окно с параметрами на своё усмотрение.
 Выведите текст из файла в это окно.

Урок 3. Запись в файл


 Создайте форму с текстовой областью и кнопкой «Записать в файл».
 При клике по кнопке весь текст из текстовой области должен быть записан в
файл.
Урок 4. Загрузка данных с внешней Web-страницы

 Попросите пользователя указать URL Web-страницы через JOptionPane.


 Выведите весь текст из Web-страницы в окно.
 Добавьте кнопку «Сохранить».
 Когда пользователь жмёт кнопку «Сохранить», необходимо записать весь
скачанный текст в файл, причём имя должно соответствовать Web-странице.
Например, если URL заканчивается на page.html?a=5&b=7, значит, имя файла
должно быть page.html.
Примечание: Если имени файла нет или это главная страница, то файл должен
называться index.html.

Раздел 9.

Многопоточное
программирование
Урок 1. Основы многопоточного программирования
Урок 2. Создание потока
 Вычислите сумму чисел от 1 до 100000000.
 Скопируйте код вычисления ещё 2 раза.
 Определите время выполнения циклов с помощью System.currentTimeMillis().
 Сделайте 2 дополнительных потока, в каждом из которых будет выполняться
тот же цикл.
 Один из потоков сделайте с помощью лямбда-выражения.
 В основном потоке закомментируйте 2 цикла, чтобы остался только один.
Таким образом, каждый из 3-х циклов будет выполняться в своём потоке.
 Определите время выполнения в этом случае.
Примечание: Метод System.currentTimeMillis() посмотрите по справочнику, либо
во всплывающей подсказке NetBeans. Целью данного задания так же является
поиск решения того, как можно определить время выполнения определённого
блока кода с использованием этого метода.

Урок 3. Работа с потоками и их синхронизация

 Добавьте вывод суммы чисел из предыдущего упражнения в консоль у каждого


потока.
 Задайте различные приоритеты каждому потоку.
 Проанализируйте время выполнения каждого потока в зависимости от
приоритета.
 Создайте класс, конструктор которого будет в качестве параметра принимать
объект File.
 Добавьте метод, который будет считывать текст из файла и возвращать
готовую строку.
 Добавьте метод, который будет записывать в файл переданную в параметрах
строку.
 Создайте 2 потока, которые должны будут одновременно записывать в файл,
используя экземпляр созданного Вами класса, некоторую строку (каждый из
потоков должен попытаться записать свою строку), а после выводить в
консоль результат их записи.
 Добейтесь того, чтобы произошла ошибка. Например, поток записал «Строка
1», а в консоле в этом потоке вывелось «Строка 2» из-за того, что в этот самый
момент другой поток записал в файл «Строка 2».
 Синхронизируйте потоки, чтобы этой ошибки больше не было.

Урок 4. Демон-потоки
 Сделайте у одного из 3-х потоков низкий приоритет.
 Сделайте его демон-потоком.

 Убедитесь, что этот поток не успел завершить свою работу до завершения


программы.
Урок 5. Заключение