Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП зачет.docx
Скачиваний:
89
Добавлен:
01.04.2022
Размер:
3.08 Mб
Скачать

Вопрос 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. При этом вызов конструктора базового класса должен идти в самом начале в конструкторе производного класса.