Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Заочники 2020-2021 / Лекция 2.ppt
Скачиваний:
95
Добавлен:
15.06.2021
Размер:
1.49 Mб
Скачать

Типы данных в Java. Условные операторы

Лекция 2

Тернарный оператор - «?»

Типы данных в Java. Операторы циклов

Лекция 2

Цикл While

Типы данных в Java. Операторы циклов

Лекция 2

Цикл Do-While

Типы данных в Java. Операторы циклов

Лекция 2

Цикл For

Тело цикла выполнится дважды т. к. шаг равен 5.

Для шага в 1 или -1 можно использовать сокращенные формы записи i-- и i++.

Типы данных в Java. Операторы циклов

Лекция 2

Цикл перебора For:

Аналог foreach

В Java аналогом foreach является специальная запись цикла с ключевым словом for.

Использование цикла for для вычисления суммы элементов массива

Типы данных в Java. Операторы циклов

Лекция 2

Управление циклами с помощью break и continue

Операторы break и continue работают в Java аналогично другим языкам программирования. Операторы break и continue имеют расширенную форму записи,

позволяющее передавать управление по метке конкретному циклу в случае вложенных циклов.

Типы данных в Java. Лямбда-выражения

Лекция 2

Назначение — введение в Java возможности использования, в том числе передачи блоков кода, возвращающих единственный результат без явного создания объектов для этого кода. Реализовано с Java 8.

Задача A.B(C, D)

A — метод объекта B

C — метод, который должен выполнится над данными D, после их преобразования в методе A

D — данные

Но нельзя передавть в Java отдельно метод. Можно передать только объект.

Выход? Создать такую запись С, которая преобразуется в метод (функцию) «на лету»

Но, поскольку «на лету», значит метод результирующего объекта должен быть абстрактным, тогда «на лету» в этот метод загружается «тело», описанное в C. Абстрактные методы могут быть в абстрактных классах или интерфейсах. Выбрали «носителем» интерфейс.

Типы данных в Java. Лямбда-выражения

Лекция 2

Термин «Функциональный интерфейс» обозначает интерфейс имеющий только один абстрактный метод. Метод такой интерфейс (с Java8) можно «снабдить» телом с помощью лямбда-выражения.

Объявляем интерфейс с одним абстрактным классом, в который будет передано тело метода при исполнении программы.

public interface MyLambda { long getValue(int v);

}

Формат описания тела (запись C) в общем имеет вид:

(список аргументов) -> { блок кода, обрабатывающий переменные; return результат; }

Если метод не принимает аргументов и ограничивается одним выражением, запись можно упростить

() -> выражение

Например: () -> 4

Типы данных в Java. Лямбда-выражения

Лекция 2

Создаем класс c методом CheckLambda, внутри которого присваиваем тело абстрактному методу getValue интерфейса MyLambda, а затем выполняем

import Test.MyLambda;

public class TestLambda { int u = 10;

public boolean CheckLambda() {

MyLambda ml; //объявляем переменную - ссылку на интерфейс ml = (n) -> n * n; //присваиваем методу getValue "тело"

System.out.println("Результат: n^2 = " + ml.getValue(10)); //100 ml = (n) -> n * n * n; //присваиваем методу getValue другое "тело" System.out.println("Результат: n^3 = " + ml.getValue(10)); //1000

ml = (n) -> u * n * n; //присваиваем методу getValue "тело" с захватом переменной u System.out.println("Результат: u*n^2 = " + ml.getValue(10)); //1000

ml = (n) -> { //присваиваем методу getValue "тело" с блоком кода int Result = 0;

Result = u * n *n; return Result;

};

System.out.println("Результат: Result = " + ml.getValue(10)); //1000 return true;

}

}

Результат: n^2 = 100 Результат: n^3 = 1000 Результат: u*n^2 = 1000

Результат: Result = 1000

Типы данных в Java. Лямбда-выражения

Лекция 2

Лямбда выражение в качестве тела метода можно передать любому существующему интерфейсу Java имеющему один абстрактный класс.

Например, интерфейс Comparator имеет один абстрактный метод compare, который необходимо переопределить конкретным телом.

Тогда объект типа Comparator можно передать в метод sort для введения своего правила сортировки массива.

Но тогда тело для метода compare можно передать сразу в качестве аргумента метода sort.

Также можно действовать с обобщенным интерфейсом Consumer (метод accept), объект котрого ожидает метод forEach

Современные IDE сразу предлагают подставлять лямбда выражения там, где это возможно.

Соседние файлы в папке Заочники 2020-2021