- •Лекция 1 Динамическая память и интеллектуальные указатели.
- •Лекция 2
- •Лекция 3
- •Исчерпание памяти
- •Лекция 4 Smart-pointer для обработки исключений
- •Создание собственного кода удаления
- •Класс unique_ptr
- •Класс weak_ptr
- •Использование динамических массивов
- •Смарт поинтеры и динамические массивы
- •Класс allocator
- •Тема 2. Обработка исключительных ситуаций
- •Лекция 7
- •Класс Exception
- •Лекция 8
- •Потоки, буферы и файл iostream
- •Перегруженная операция вставки
- •Лекция 9
- •Ввод с помощью cin
- •Тема 4. Файловый ввод/вывод
- •Лекция 10
- •Режимы открытия файла
- •Бинарные файлы
- •Лекция 11
- •Тема 5. Библиотека шаблонов Standart Template Library (stl)
- •Шаблонный класс Vector
- •Лекция 12
- •Цикл for , основанный на диапазоне
- •Обобщённое программирование
- •Лекция 13
- •Виды итераторов
- •Входные итераторы
- •Однонаправленные итераторы
- •Двунаправленные итераторы
- •Произвольного доступа
- •Лекция 14 Двунаправленные итераторы
- •Виды контейнеров
- •Лекция 15 Разработка с использованием Java-платформы
- •Этапы развития языка Java
- •Байт-код
- •Особенности языка Java
- •Программная платформа и виртуальная машина Java
- •Особенности разработки и исполнения объектно-ориентированных приложений на Java Сборка мусора в Java
- •Пакет jdk
- •Ide для работы на Java
- •Особенности настройки работы платформы Java
- •Запуск приложения на языке Java без ide
- •Особенности лексики Java
- •Примитивные типы данных Java
- •Переменные
- •Объявление переменной
- •Область и срок действия переменной
- •Преобразование и приведение типов. Автоматическое приведение и продвижение типов в выражениях. Логические выражения. Арифметические операции
- •Логические операции
- •Предшествование операций
- •Управляющие операторы
- •Операторы выбора Условный оператор if
- •Операторы цикла
- •Разновидность цикла for в стиле for each
- •Применение оператора instanceof
- •Принципы ооп
Преобразование и приведение типов. Автоматическое приведение и продвижение типов в выражениях. Логические выражения. Арифметические операции
Арифметические операции применяются в математических выражениях таким же образом, как и в алгебре. Все арифметические операции, доступные в Java, перечислены ниже.
+ Сложение (а также унарный плюс)
- Вычитание (а также унарный минус)
* Умножение
/ Деление
% Деление по модулю
++ Инкремент (приращение на 1)
+= Сложение с присваиванием
-= Вычитание с присваиванием
*= Умножение с присваиванием
/= Деление с присваиванием
%= Деление по модулю с присваиванием
-- Декремент (отрицательно приращение на 1)
Операнды арифметических операций должны иметь числовой тип. Арифметические операции нельзя выполнять над логическими типами данных, но допускается над типом char, посколько в Java этот тип по существу является разновидностью типа int.
Логические операции
Логические операции выполняются только с операндами типа boolean. Все логические операции с двумя операндами соединяют два логически значения, образуя результирующее логическое значение. Все доступные в Java логические операции перечислены в таблице.
& Логическая операция И
| Логическая операция ИЛИ
^ Логическая операция исключающее ИЛИ
|| Укороченная логическая операция ИЛИ
&& Укороченная логическая операция И
! Логическая унарная операция НЕ
&= Логическая операция И с присваиванием
|= Логическая операция ИЛИ с присваиванием
^= Логическая операция исключающее ИЛИ с присваиванием
== Равенство
!= Неравенство
? : Тернарная условная операция типа если…, то …, иначе
В языке Java предоставляются. две любопытные логические операции, отсутствующие во многих других языках программирования. Эти вторые версии логических операций И и ИЛИ обычно называются укороченными логическими операциями. Результат выполнения укороченной логической операции ИЛИ равен true, когда значение операнда А равно true независимо от значения операнда В. Аналогично результат выполнения укороченной логической операции И равен false, когда значение операнда А равно false независимо от значения операнда В. При использовании форм || и && этих операторов вместо форм | и & в программе нa Java не будет вычисляться значение правого операнда, если результат выражения можно определить по значению только левого операнда. Этим обстоятельством очень удобно пользоваться в тех случах, когда значение правого операнда зависит от значения левого.
Например, в следующей строке кода демонстрируется преимущество применения укороченных логических операций, чтобы выяснить достоверность операции деления перед вычислением ее результата.
if(denom ! =0 && num / denom > 10)
Предшествование операций
Предшествование (от высшего к низшему) операций в Java приведено в таблице на экране. Операции, находящиеся в одном ряду таблицы, имеют одинаковое предшествование. Операции с двумя операндами имеют порядок вычисления слева направо (за исключением операции присваивания, которая выполняется справа налево). Формально скобки [] и (), а также точка (.) считаются разделителями, но они мог служить и в качестве операций. Именно в этом качестве они имеют наивысшее предшествование. Обратите также внимание на операцию "стрелка" (->), которая была внедрена в версии JDК 8 и применяется в лямбда-выражениях.
Наивысшее предшествование
[], (), . круглые скобки, квадратные скобки, точка
++ (постфиксная операция), -- (постфиксная операция)
++ (префиксная операция), -- (префиксная операция), ~, !, + (унарная операция), (приведение типов)
*, /, %
+, -, >>, >>>, <<
>, >=, <, <=, instanceof
==, !=
&
^
|
&&
||
? :
-> (стрелка, JDK 8, лямбда-выражения )
=
Наинизшее предшествование
Круглые скобки повышают предшествование заключенных в них операций. Нередко это требуется для получения необходимого результата.