
- •Вопрос 1. История языка программирования Java. Достоинства и недостатки языка. Основные особенности. Жизненный цикл программы на Java. Краткая теория: особенности и сферы применения Java
- •Особенности языка Java
- •Плюсы программирования на Java
- •Объектно-ориентированное программирование
- •Java — язык высокого уровня с простым синтаксисом и плавной кривой обучения
- •Стандарт для корпоративных вычислительных систем
- •Безопасность
- •Независимость от платформы («Написать один раз и использовать везде»)
- •Автоматическое управление памятью
- •Многопоточность
- •Стабильность и сообщество
- •Минусы программирования на Java
- •Платное коммерческое использование
- •Низкая производительность
- •Отсутствие нативного дизайна
- •Многословный и сложный код
- •Принципы ооп:
- •Вопрос 2 Примитивные типы Java. Область видимости и время жизни объектов.
- •Область видимости и время жизни переменных.
- •Область видимости и время жизни объектов
- •Вопрос 3. Классы и объекты. Структура класса. Конструкторы класса
- •Конструкторы
- •Вопрос 4. Модификаторы доступа
- •Инкапсуляция
- •Вопрос 5. Ключевое слово this
- •Вопрос 7. Операции. Литералы. Операторы Литералы
- •Операции
- •Переопределение методов
- •Вопрос 9. Полиморфизм. Перегрузка и переопределение.
- •Вопрос 10. Ключевое слово final. В java есть ключевое слово – final. Оно может применяться к классам, методам, переменным (в том числе аргументам методов).
- •Вопрос 11. Абстрактные классы и методы
- •Вопрос 12. Интерфейсы
- •Методы по умолчанию
- •Статические методы
- •Приватные методы
- •Статические вложенные классы
- •Внутренние классы
- •Локальные классы
- •Анонимные классы
- •Вопрос 14. Коллекции объектов в Java. P.S. Взято из лекции
- •Вопрос 15. Итераторы Взято из лекции
- •Вопрос 16. Интерфейсы Comparable, Comparator. Назначение, примеры
- •Вопрос 17. Обработка исключений. Поведение программы при возникновении исключения. Структура и использование блока перехвата исключений.
- •Поведение программы при появлении исключения
- •Обработка исключений. Структура и использование блока перехвата исключений.
- •Вопрос 18. Классы исключительных ситуаций. Блок finally
- •Классы исключительных ситуаций:
- •Блок finally
- •Вопрос 19. Генерация исключительных ситуаций. Создание собственных классов исключительных ситуаций. Исключительные ситуации и наследование Генерация исключительных ситуаций
- •Создание собственных классов исключительных ситуаций
- •Исключительные ситуации и наследование
- •Вопрос 20. Ввод/вывод (I/o) в Java
- •Иерархия InputStream
- •Иерархия Reader
- •Иерархия OutputStream
- •Иерархия Writer
- •Класс RandomAccessFile
- •Класс File
- •Вопрос 21. Сериализация объектов.
Вопрос 7. Операции. Литералы. Операторы Литералы
Литерал — это представление исходного кода с фиксированным значением. Они представлены непосредственно в коде без каких-либо вычислений.
Литералы в Java могут быть назначены любой переменной типа примитива.
Пример
byte a = 68;
char a = 'A'
Префикс 0 используется для обозначения восьмеричного числа, а префикс 0x обозначает шестнадцатеричное при использовании этих систем счисления для литералов.
Строковые литералы указываются так же, как и в большинстве других языков, заключая последовательность символов между парой двойных кавычек.
Пример
"Hello World"
"two\nlines"
Операции
Большинство операций в Java аналогичны тем, которые применяются в других си-подобных языках. Есть унарные операции (выполняются над одним операндом), бинарные - над двумя операндами, а также тернарные - выполняются над тремя операндами. Операндом является переменная или значение (например, число), участвующее в операции.
В арифметических операциях участвуют числа. В Java есть бинарные арифметические операции (производятся над двумя операндами) и унарные (выполняются над одним операндом). К бинарным операциям относят следующие:
+ операция сложения двух чисел
- операция вычитания двух чисел:
* операция умножения двух чисел
/ операция деления двух чисел (При делении стоит учитывать, что если в операции участвуют два целых числа, то результат деления будет округляться до целого числа, даже если результат присваивается переменной float или double. Чтобы результат представлял число с плавающей точкой, один из операндов также должен представлять число с плавающей точкой (например: 10.0 / 4)
% получение остатка от деления двух чисел
Также есть две унарные арифметические операции, которые производятся над одним числом: ++ (инкремент) и -- (декремент). Каждая из операций имеет две разновидности: префиксная и постфиксная:
++ (префиксный инкремент) Предполагает увеличение переменной на единицу, например, z=++y (вначале значение переменной y увеличивается на 1, а затем ее значение присваивается переменной z)
++ (постфиксный инкремент) Также представляет увеличение переменной на единицу, например, z=y++ (вначале значение переменной y присваивается переменной z, а потом значение переменной y увеличивается на 1)
-- (префиксный декремент) Уменьшение переменной на единицу, например, z=--y (вначале значение переменной y уменьшается на 1, а потом ее значение присваивается переменной z)
-- (постфиксный декремент) z=y-- (сначала значение переменной y присваивается переменной z, а затем значение переменной y уменьшается на 1)
Приоритет арифметических операций
++ (инкремент), -- (декремент)
* (умножение), / (деление), % (остаток от деления)
+ (сложение), - (вычитание)
Операторы
Java предоставляет богатый набор операторов для управления переменными. Все операторы Java можно разделить на следующие группы:
арифметические операторы;
операторы сравнения;
побитовые операторы;
логические операторы;
операторы присваивания;
прочие операторы.
Арифметические операторы
Арифметические операторы — используются в математических выражениях таким же образом, как они используются в алгебре.
Операторы сравнения
Есть следующие операторы сравнения, поддерживаемые на языке Java.
Побитовые операторы
Java определяет несколько побитовых операторов, которые могут быть применены для целочисленных типов: int, long, short, char и byte. В Java побитовый оператор работает над битами и выполняет операцию бит за битом.
Логические операторы
Операторы присваивания
Прочие операторы
Тернарный оператор или условный оператор (?:)
Тернарный оператор — оператор, который состоит из трех операндов и используется для оценки выражений типа boolean. Тернарный оператор в Java также известен как условный оператор. Этот. Цель тернарного оператора или условного оператора заключается в том, чтобы решить, какое значение должно быть присвоено переменной. Оператор записывается в виде:
переменная x = (выражение) ? значение if true : значение if false
Пример
Ниже приведен пример:
public class Test {
public static void main(String args[]){
int a , b;
a = 10;
b = (a == 1) ? 20 : 30;
System.out.println( "Значение b: " + b );
b = (a == 10) ? 20 : 30;
System.out.println( "Значение b: " + b );
}
}
Будет получен следующий результат:
Значение b: 30
Значение b: 20
Оператор instanceof
Оператор instanceof — проверяет, является ли объект определенного типа (типа класса или типа интерфейса) и используется только для переменных ссылочного объекта. Оператор instanceof записывается в виде:
(Переменная ссылочного объекта) instanceof (класс/тип интерфейса)
Примеры
public class Test {
public static void main(String args[]){
String name = "Олег";
// Следующее вернётся верно, поскольку тип String
boolean result = name instanceof String;
System.out.println( result );
}
}
Будет получен следующий результат:
true
Приоритет операторов
Вопрос 8. Наследование классов. Модификаторы доступа при наследовании. Преобразование классов при наследовании.
Одним из ключевых аспектов объектно-ориентированного программирования является наследование. С помощью наследования можно расширить функционал уже имеющихся классов за счет добавления нового функционала или изменения старого.
Чтобы объявить один класс наследником от другого, надо использовать после имени класса-наследника ключевое слово extends, после которого идет имя базового класса.
Производный класс имеет доступ ко всем методам и полям базового класса (даже если базовый класс находится в другом пакете) кроме тех, которые определены с модификатором private. Если в базовом классе определены конструкторы, то в конструкторе производного классы необходимо вызвать один из конструкторов базового класса с помощью ключевого слова super. При этом вызов конструктора базового класса должен идти в самом начале в конструкторе производного класса.