Лексика, семантика и основные управляющие конструкции языка Java

Содержание

Слайд 2

Типы данных, операции

К простым типам данных относятся логический тип данных boolean, и

Типы данных, операции К простым типам данных относятся логический тип данных boolean,
числовые типы данных.
Числовые типы данных представляют собой:
-целочисленные типы данных -byte, short, int, long, char.
-типы данных с плавающей точкой - float, double.
К ссылочным типам данных относятся классы, интерфейсы и массивы.

Слайд 3

Операции над целыми типами

Арифметические операции и операции сравнения производятся аналогично соответствующим операциям

Операции над целыми типами Арифметические операции и операции сравнения производятся аналогично соответствующим
в C/C++.
Конструкторы, методы и константы для работы с целочисленными значениями находятся в стандартных Java классах-оболочках: Integer, Long и Character.
Встроенные в Java целочисленные операторы не сигнализируют о переполнении значений. Исключение составляют операторы деления (/) и нахождения остатка (%), вызывающее исключение если знаменатель равен нулю.

Слайд 4

Операции над вещественными типами

Арифметические и операции сравнения производятся аналогично соответствующим операциям в

Операции над вещественными типами Арифметические и операции сравнения производятся аналогично соответствующим операциям
C/C++
Целые и вещественные значения можно смешивать в операциях. К обычным вещественным числам добавлены три значения: POSITIVE_INFINITY – положительная бесконечность, NEGATIVE_INFINITY – отрицательная бесконечность, NaN - "не число”
Конструкторы, методы и константы для работы со значениями с плавающей точкой находятся в стандартных Java классах-оболочках Float, Double и Math.

Слайд 5

Логический тип данных

Логический (булевский) тип данных служит для представления логической величины, имеющей

Логический тип данных Логический (булевский) тип данных служит для представления логической величины,
одно из двух возможных значений: true – истина, false – ложь
0 (ноль) не является эквивалентом для значения "ложь“
Над логическими данными можно выполнять операции присваивания, сравнение на равенство и неравенство, а также логические операции выполняемые аналогично соответствующим операциям в C/C++.

Слайд 6

Операции присваивания
=,+=, - =,*=,/=, %=, &=, |=, ^=,<<=, >>=, >>>=
выполняются аналогично соответствующим

Операции присваивания =,+=, - =,*=,/=, %=, &=, |=, ^=, >=, >>>= выполняются
операциям в C/C++.
int n = 0;

n -= 2; // n = n – 2

Слайд 7

Условная операция ?:

выполняются аналогично соответствующей операции в C/C++
int y = 123;

int

Условная операция ?: выполняются аналогично соответствующей операции в C/C++ int y =
x = (y >= 0 ? 1 : -1);
boolean b = y < 0;

Слайд 8

Выражения

Из констант и переменных, операций над ними, вызовов методов и скобок составляются

Выражения Из констант и переменных, операций над ними, вызовов методов и скобок
выражения. При вычислении выражения выполняются четыре правила:
Операции одного приоритета вычисляются слева направо. Исключение: операции присваивания вычисляются справа налево
Левый операнд вычисляется раньше правого
Операнды полностью вычисляются перед выполнением операции
Перед выполнением составной операции присваивания значение левой части сохраняется для использования в правой части
Пример.
int a = 3, b = 5;
b += a += b += 7;
В результате вычислений b получит значение 27.

Слайд 9

Приоритет операции

Операции перечислены в порядке убывания приоритета:
Постфиксные операции ++ и --.
Префиксные операции

Приоритет операции Операции перечислены в порядке убывания приоритета: Постфиксные операции ++ и
++ и --, дополнение ~ и отрицание !
Приведение типа (тип)
Умножение *, деление / и взятие остатка %.
Сложение + и вычитание - .
Сдвиги <<, >>, >>>
Сравнения >, <, >=, <=
Сравнения ==, !=
Побитовая конъюнкция &
Побитовое исключающее ИЛИ ^
Побитовая дизъюнкция |
Конъюнкция &&
Дизъюнкция ||
Условная операция ?:
Присваивания =,+=, -=, *=, /=, %=, \&=, ^=, |=, <<=, >>=, >>>=

Слайд 10

Приведение типов

При проведении компиляции Java программ происходит проверка соответствия типов данных и

Приведение типов При проведении компиляции Java программ происходит проверка соответствия типов данных
предотвращение неверных операций присваивания.
Все сомнительные программные конструкции приводят к выдаче компилятором сообщений об ошибке в приведении типов.
Java поддерживает неявное приведение значений целого типа данных в типы с плавающей точкой. Обратное преобразование некорректно и компилятор выдаст ошибку.
Явное приведение типов осуществляется при помощи оператора:
(тип) значение_другого_типа
Результат арифметической операции имеет тип int, кроме случая, когда один из операндов типа long. В этом случае результат будет типа long. Перед выполнением арифметической операции всегда происходит повышение типов byte, short, char в тип int, а может быть, и в тип long, если другой операнд типа long
Нельзя преобразовать тип данных с плавающей точкой в логический тип данных и наоборот.
При преобразовании типа данных с большей точностью представления значений (например, double) к типу данных, поддерживающих меньшую точность представления (например, float) возможна потеря данных.

Слайд 11

Управляющие конструкции

Управляющие конструкции предназначены для управления последовательностью исполнения операторов.
В Java существуют

Управляющие конструкции Управляющие конструкции предназначены для управления последовательностью исполнения операторов. В Java
следующие управляющие конструкции:
условие if-else
переключатель switch
цикл с предусловием while
цикл с послесловием do-while
цикл для определенного диапазона for
обработчик исключений try-catch-finally

Слайд 12

Операторы и блоки

Символом завершения оператора в Java является знак "точка с запятой".
Для

Операторы и блоки Символом завершения оператора в Java является знак "точка с
группировки операторов в блок используются фигурные скобки:
{
оператор1;
оператор2;
}
Блок является составным оператором и используется так же, как и отдельный оператор.

Слайд 13

Условие if-else

Условие if-else служит базовой управляющей конструкцией любого алгоритмического языка и в

Условие if-else Условие if-else служит базовой управляющей конструкцией любого алгоритмического языка и
Java имеет вид:
if (логическоеВыражение)
оператор1
[else
оператор2];
Вначале работы этой управляющей конструкции вычисляется логическоеВыражение и если оно верно, то управление передается оператору1, в противном случае управление передается оператору2.

Слайд 14

Переключатель switch

Переключатель switch сначала вычисляет целочисленноеВыражение, после чего происходит поиск метки case

Переключатель switch Переключатель switch сначала вычисляет целочисленноеВыражение, после чего происходит поиск метки
с соответствующим вычисленным значением. Если такая метка найдена, то управление передается ей, иначе управление передается метке default. Если метка default отсутствует, то весь блок операторов управляющей конструкции switch игнорируется. Операторы, следующие за найденной меткой, исполняются последовательно, пока не встретится ключевое слово break, после чего происходит выход из управляющей конструкции:
switch (целочисленноеВыражение)
{
case значение1: оператор1;
case значение2: оператор2;
...
default:
оператор0;
}

Слайд 15

Цикл с предусловием while

Цикл с предусловием имеет вид:
while (логическоеВыражение) оператор;
Вначале работы цикла

Цикл с предусловием while Цикл с предусловием имеет вид: while (логическоеВыражение) оператор;
проверяется значение логического выражение, и если оно истинно, то выполняется оператор, а затем управление передается в начало цикла, и снова происходит проверка логического выражения.
Цикл исполняется до тех пор, пока логическое выражение имеет значение true.

Слайд 16

Цикл с послеусловием do-while

Цикл с послеусловием имеет вид:
do
оператор
while (логическоеВыражение);
Цикл с послеусловием аналогичен

Цикл с послеусловием do-while Цикл с послеусловием имеет вид: do оператор while
циклу с предусловием, за исключением того, что сначала выполняется оператор, а потом проверяется истинность логического выражения, и если оно истинно, то управление снова передается в начало цикла. В противном случае происходит выход из цикла.

Слайд 17

Цикл for

Цикл for используется для исполнения цикла тогда, когда задан диапазон изменения

Цикл for Цикл for используется для исполнения цикла тогда, когда задан диапазон
значений переменных и имеет вид:
for (инициализацияПеременных; логическоеЗначение; приращение) оператор;
где инициализацияПеременных имеет вид:
[тип] имяПеременной1 = начальноеЗначение1
[, имяПеременной2 = начальноеЗначение2 [, ...]]
Все переменные, разделенные запятой, должны принадлежать одному и тому же типу.
Приращение имеет вид:
значение1 [, значение2 [, ...]]
Существует вариант бесконечного цикла for:
for (;;) оператор;
из которого можно выйти только при помощи выражения прерывания цикла break, выражения выхода из метода return или посредством возбуждения исключения.

Слайд 18

Выход из цикла break

Для принудительного выхода из управляющих конструкций циклов while, do

Выход из цикла break Для принудительного выхода из управляющих конструкций циклов while,
- while, for используется ключевое слово break.

Слайд 19

Переход к началу цикла continue

Для того, чтобы в процессе исполнения цикла while,

Переход к началу цикла continue Для того, чтобы в процессе исполнения цикла
do-while или for вернуться к его началу, проигнорировав дальнейшую последовательность операторов, применяется ключевое слово continue.

Слайд 20

Метки

Определение метки имеет вид:
имяМетки: цикл
где цикл представляет собой цикл while, do -

Метки Определение метки имеет вид: имяМетки: цикл где цикл представляет собой цикл
while или for того уровня, из которого следует выйти при помощи выражения break имяМетки или к началу которого следует перейти при помощи выражения continue имяМетки.
Использование ключевого слова break имеет вид:
break имяМетки;
Использование ключевого слова continue имеет вид:
continue имяМетки;

Слайд 21

Возврат из метода return

Выражение для выхода из метода имеет следующий вид:
return значение;
где

Возврат из метода return Выражение для выхода из метода имеет следующий вид:
тип значение совпадает с возвращаемым типом, определенным для соответствующего метода.
Если метод объявлен, как не возвращающий значения, то есть void, или если ключевое слово return используется в теле конструктора, то выражение для выхода из метода имеет вид:
return;

Слайд 22

Единица компиляции (compilation unit)

Единица компиляции Java хранится в текстовом .java-файле и является

Единица компиляции (compilation unit) Единица компиляции Java хранится в текстовом .java-файле и
единичной порцией входных данных для компилятора. Каждый .java-файл состоит из трех частей:
объявление пакета;
import-выражения;
объявления верхнего уровня
Объявление пакета одновременно указывает, какому пакету будут принадлежать все объявляемые ниже типы. Это выражение может отсутствовать, что означает, что эти классы располагаются в безымянном пакете (другое название - пакет по умолчанию).
Пример:
package java.lang;

Слайд 23

Единица компиляции (compilation unit)

import-выражения позволяют обращаться к типам из других пакетов по

Единица компиляции (compilation unit) import-выражения позволяют обращаться к типам из других пакетов
их простым именам, "импортировать" их. Эти выражения также необязательны.
Пример:
import java.io;
Наконец, объявления верхнего уровня содержат объявления одного или нескольких типов. Название "верхнего уровня" противопоставляет эти классы и интерфейсы, располагающиеся в пакетах, внутренним типам, которые являются элементами и располагаются внутри других типов.
Эта часть также является необязательной, в том смысле, что компилятор не выдаст ошибки в случае ее отсутствия. Однако, никаких .class-файлов сгенерировано тоже не будет.

Слайд 24

Единица компиляции (compilation unit)

Пакеты представляют собой структуры, в которых хранятся
скомпилированные байт-коды классов.

Единица компиляции (compilation unit) Пакеты представляют собой структуры, в которых хранятся скомпилированные
Физически пакет представляет собой каталог на диске, в котором записаны скомпилированные коды классов.

Слайд 25

Классы и интерфейсы

Классы и интерфейсы

Слайд 26

Классы и объекты

Данные и соответствующие им методы объединены в одну структуру, которая

Классы и объекты Данные и соответствующие им методы объединены в одну структуру,
в ООП называется объектом.
Объект - это программная модель объектов реального мира или абстрактных понятий, представляющая собой совокупность переменных, задающих состояние объекта, и связанных с ними методов, определяющих поведение объекта.

Слайд 27

Классы и объекты

Для описания объектов в Java используется понятие класс. Все коды

Классы и объекты Для описания объектов в Java используется понятие класс. Все
в языке Java находятся внутри классов.
Класс – это шаблон по которому создаётся объект, он задаёт прототип, описывающий переменные и методы. Конструирование объекта на основе некоторого класса называется созданием экземпляра этого класса (instance).

Слайд 28

Создание класса

Объявление класса в языке Java имеет вид:
[модификаторы] class имя_класса
[extends суперКласс]
[implements

Создание класса Объявление класса в языке Java имеет вид: [модификаторы] class имя_класса
СписокИнтерфейсов]
{
переменные и методы класса
}
Объекты создаются с помощью команды new.

Слайд 29

Создание класса

В качестве модификаторов класса могут использоваться следующие ключевые слова:
public – элементы

Создание класса В качестве модификаторов класса могут использоваться следующие ключевые слова: public
класса доступны вне текущего пакета, которому принадлежит данный класс
(по умолчанию) - элементы класса доступны из пакета, в который входит данный класс
abstract - класс не имеет экземпляров класса
final - класс не имеет подклассов

Слайд 30

Доступ к элементам класса

Все поля и методы доступны для методов данного класса.

Доступ к элементам класса Все поля и методы доступны для методов данного
Для того, чтобы ограничить к ним доступ из других классов, используются спецификаторы доступа к полям и методам класса:
public – открытый - к элементам класса можно обращаться из любого другого класса
protected – защищенный - к элементам класса можно обращаться только из класса–потомка
(по умолчанию) – пакетный - к элементам класса можно обращаться только из классов, принадлежащих тому же самому пакету, что и данный класс
private – закрытый - к элементам класса можно обращаться только из самого данного класса

Слайд 31

Поля класса

Объявление поля класса имеет вид:
[модификаторы] типДанных поле [= начальноеЗначение]
Поля делятся на

Поля класса Объявление поля класса имеет вид: [модификаторы] типДанных поле [= начальноеЗначение]
два типа:
статические (поля класса) - поля, совместно используемые всеми экземплярами одного класса;
динамические (поля экземпляра класса) - поля, уникальные для каждого экземпляра класса.
Статические поля помечаются модификатором static. Они используются для синхронизации данных в различных экземплярах одного и того же класса.

Слайд 32

Поля класса

Полям класса или экземпляра класса можно присваивать инициализирующие значения, соответствующие их

Поля класса Полям класса или экземпляра класса можно присваивать инициализирующие значения, соответствующие
типу данных.
Значение динамических полей инициализируются при создании экземпляра класса.
Если поле объявляется с модификатором final, то значение такого поля в программе не может быть изменено - в противном случае компилятор выдаст сообщение об ошибке. Такие финальные переменные исполняют в Java роль констант.
Обращение к переменной класса (статическому полю) имеет вид:
класс.статическоеПоле
Обращение к переменной экземпляра класса (динамическому полю) имеет вид:
экземплярКласса.поле

Слайд 33

Объявление и создание экземпляра класса

Объявление экземпляра класса (то есть объекта, принадлежащего соответствующему

Объявление и создание экземпляра класса Объявление экземпляра класса (то есть объекта, принадлежащего
типу класса) имеет вид:
класс экземплярКласса
Объявление объекта создает не сам объект, а только ссылку на этот объект. Доступ к объекту осуществляется только по его ссылке. Объекты создаются при помощи оператора new, за которым следует конструктор класса:
экземплярКласса = new класс(параметры)
Класс в языке Java связно хранит внутри себя кроме полей и методов также блоки инициализации, конструкторы и другие классы, встроенные в текущий класс.

Слайд 34

пример

// объявление класса
class Point {
int x, y;
boolean isVisible;
// блок

пример // объявление класса class Point { int x, y; boolean isVisible;
инициализатор:
{
x = 0; y = 0;
isVisible = false;
}
}
// объявление объекта
Point p;
// создание объекта
p = new Point();
p.x = 100;
p.y = 200;
p.isVisible = true;

Слайд 35

Вложенные, локальные и анонимные классы

Вложенный класс – это класс, объявленный внутри объявления

Вложенные, локальные и анонимные классы Вложенный класс – это класс, объявленный внутри
другого класса.
public class EnclosingClass {
...
public class NestedClass { // вложенный класс
...
}
}

Слайд 36

Вложенные, локальные и анонимные классы

Локальный класс – это класс, объявленный внутри блока

Вложенные, локальные и анонимные классы Локальный класс – это класс, объявленный внутри
кода. Область видимости локального класса ограничена тем блоком, внутри которого он объявлен.
public class EnclosingClass {
...
public void enclosingMethod(){
// Этот класс доступен только внутри enclosingMethod()
public class LocalClass { // локальный класс
...
}
}
}

Слайд 37

Вложенные, локальные и анонимные классы

Анонимный класс – это локальный класс без имени.
//

Вложенные, локальные и анонимные классы Анонимный класс – это локальный класс без
Параметр конструктора – экземпляр анонимного класса,
// реализующего интерфейс Runnable
new Thread(
new Runnable() {
public void run() {...}
}
).start();

Слайд 38

Конструкторы

Для инициализации объекта при его создании используются конструкторы.
Конструктор имеет список параметров и

Конструкторы Для инициализации объекта при его создании используются конструкторы. Конструктор имеет список
имя, совпадающее с именем класса. В классе может быть несколько конструкторов, имеющих разные списки параметров.
Конструктор не возвращает значения и вызывается при создании нового экземпляра. Вызов конструктора происходит после инициализации по умолчанию полей объекта и вызова блоков инициализации полей экземпляра класса.

Слайд 39

Конструкторы

Создание конструктора класса имеет вид:
[модификаторДоступа] класс (списокПараметров)[throws исключение]
{
телоКонструктора
}
В качестве спецификатораДоступа можно использовать

Конструкторы Создание конструктора класса имеет вид: [модификаторДоступа] класс (списокПараметров)[throws исключение] { телоКонструктора
одно из следующих ключевых слов:
public – доступ из любого другого класса
protected - доступ из классов-потомков
(по умолчанию) – доступ из классов пакета
private – доступ из данного класса, обычно
используется для запрета создания экземпляра текущего класса

Слайд 40

Конструкторы

Конструкторы имеют место только для экземпляров класса.
Для создания кода инициализации

Конструкторы Конструкторы имеют место только для экземпляров класса. Для создания кода инициализации
статических переменных, принадлежащих всему классу, используются блоки статической инициализации.
Инициализацию объекта можно производить с помощью конструктора по умолчанию. Этот конструктор не содержит параметров при его вызове для создания экземпляра данного класса.

Слайд 41

Конструкторы

Если в классе определен хотя бы один конструктор с непустым списком

Конструкторы Если в классе определен хотя бы один конструктор с непустым списком
параметров, то для инициализации экземпляра класса без передачи параметров необходимо указать дополнительный конструктор с пустым списком параметров.
Последовательность инициализации полей класса при вызове конструктора с параметрами определяется следующим образом:
· сначала инициализируются поля класса (по умолчанию или
явно);
· исполняются блоки инициализации;
· происходит инициализация полей класса при помощи конструктора.

Слайд 42

Методы

Метод объявляется следующим образом:
[модификаторы]Возвращаемый_тип имя_метода() программный_блок
или
[модификаторы]Возвращаемый_тип имя_метода(тип имя_параметра, тип имя_параметра, ...) программный_блок
Модификаторы

Методы Метод объявляется следующим образом: [модификаторы]Возвращаемый_тип имя_метода() программный_блок или [модификаторы]Возвращаемый_тип имя_метода(тип имя_параметра,
определяют способы последующего использования метода.

Слайд 43

Методы

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

Методы Перед определением метода можно задать следующие ключевые слова: abstract - этот
т. е. в программе нельзя создавать его экземпляры;
static - метод класса;
native - метод реализован на языке, зависящем от платформы;
final - метод не может переопределяться в классах потомках;
synchronized - разрешена работа только одного потока команд данного метода;
public, private или protected - спецификаторы доступа.

Слайд 44

Методы

Внутри метода или в теле конструктора могут использоваться следующие выражения:
this - ссылка

Методы Внутри метода или в теле конструктора могут использоваться следующие выражения: this
на текущий объект;
super - ссылка на базовый объект;
super.имя_метода() - метод базового класса;
this(...) - вызов конструктора данного класса;
super(...) - вызов конструктора базового класса;
return или return значение - возвращает управление вызвавшей программе и передает ей указанное значение.

Слайд 45

Методы

Метод может быть перегруженным, т.е. существует несколько его версий с одним и

Методы Метод может быть перегруженным, т.е. существует несколько его версий с одним
тем же именем, но с различным списком параметров.
Статические методы могут перегружаться нестатическими и наоборот.
Простые типы данных всегда передаются через параметры методов по значению.
Ссылочные типы данных и массивы всегда передаются через параметры методов по ссылке.

Слайд 46

Методы с переменным числом параметров

Объявление:
[модификаторы]Возвращаемый_тип имя_метода(тип... имя_параметра) программный_блок
При передаче параметров в метод

Методы с переменным числом параметров Объявление: [модификаторы]Возвращаемый_тип имя_метода(тип... имя_параметра) программный_блок При передаче
из них автоматически создается массив.

Слайд 47

Пакеты. Импортирование

Классы группируются в пакеты классов.
Пакеты представляют собой структуры, в

Пакеты. Импортирование Классы группируются в пакеты классов. Пакеты представляют собой структуры, в
которых хранятся скомпилированные байт-коды классов. Физически пакет представляет собой каталог на диске, в котором записаны скомпилированные коды классов.
Все стандартные объекты Java находятся в пакетах.
Для использования классов пакета в программе необходимо выполнить операцию подключения данного пакета. Такая процедура носит название импортирование пакета и имеет следующий синтаксис:

Слайд 48

Пакеты. Импортирование


import имя_пакета.{имя_класса | * };
В случае * подключаются все классы

Пакеты. Импортирование import имя_пакета.{имя_класса | * }; В случае * подключаются все
пакета.
Статический импорт: Константы и статические методы класса можно использовать без указания принадлежности к классу, если применить статический импорт, как это показано в примерах:
import static java.lang.Math.*;
import static java.lang.Math.E;
Имя файла: Лексика,-семантика-и-основные-управляющие-конструкции-языка-Java.pptx
Количество просмотров: 29
Количество скачиваний: 0