Инструкция
n Форма с постусловием
l Выполняется пока условие истинно
l При первом входе в цикл проверка
условия не производится
do
Инструкция
while (ЛогическоеВыражение);
Цикл с предусловием for
n Формально цикл for в Java не является циклом со счетчиком
n Общий синтаксис
For( СекцияИнициализации; ЛогиескоеВыражение; СекцияИзменения)
Инструкция
n Все секции заголовка являются необязательными
n Тело также может быть пустым
for( ; ; );
Секции цикла for
n Секции инициализации и изменения могут быть представлены списком выражений, разделенных запятой
for (i = 0, j = 50; j >= 0; i++, j--) {
//...
}
n Допустимо объявление переменных в секции инициализации
for (int i = 0, j = 50; j >= 0; i++, j--) {
//...
}
Объявление переменных в цикле for
НЕЛЬЗЯ
for (int i = 0, Cell node = head;
i < MAX && node != null;
i++, node = node.next) {
//...
}
МОЖНО
При инициализации переменных различных типов они не должны объявляться внутри заголовка
int i; Cell node;
for (i = 0, node = head;
i < MAX && node != null;
i++, node = node.next) {
//...
}
Вопрос 24 Метки. Возврат из метода. 49-54 лекция Лексика языка Java
Работа с метками
· Метка метка: Инструкция
· Оператора goto в Java нет!!!
· Метками можно помечать блоки инструкций и циклы
· Обращаться к меткам разрешено только с помощью команд break и continue
Break
n Применяется для завершения выполнения кода блока инструкций
n Завершение текущего блока (безымянная форма) break ;
n Завершение указанного блока (именованная форма) break метка;
n Завершить блок, который сейчас не выполняется, нельзя!
Break
private float[][] matrix;
public boolean workOnFlag(float flag) {
int y, x;
boolean found = false;
search:
for (y = 0; y < matrix.length; y++) {
for (x = 0; x < matrix[y].length; x++) {
if (matrix[y][x] == flag) {
found = true;
break search;
}
}
}
//...
}
Continue
n Применяется только в контексте циклических конструкций
n Производит передачу управления в конец тела цикла
n Завершение витка текущего цикла (безымянная форма) continue ;
n Завершение витка указанного цикла (именованная форма) continue метка;
n Завершить виток цикла, который сейчас не выполняется, нельзя!
Continue
static void doubleUp(int[][] matrix) {
int order = matrix.length;
column:
for (int i = 0; i < order; i++) {
for (int j = 0; j < order; j++) {
matrix[i][j] = matrix[j][i] =
matrix[i][j] * 2;
if (i == j)
continue column;
}
}
}
Возврат из метода
· Инструкция return прекращает выполнение метода и возвращает его результат
· С возвращаемым значением
return value ;
· Значение должно быть приводимо к типу, возвращаемому методом
· Без возвращаемого значения
return;
· методы void
· конструкторы
Вопрос 25 Отношения между классами: наследование, зависимость, метакласс. 3-4,8 Отношения между типами и особенности разработки
Отношения между классами
n Наследование
n Зависимость
n Метакласс
Наследование
Особенности
n Использование одним классом структуры и/или поведения другого класса
n Дочерний класс специализирует родительский класс
n Образуется отношение «общее-частное» между классами
Реализация на практике
n Часть синтаксиса языка
n Возможен особый синтаксис для множественного наследования
n Особый синтаксис для абстрактных классов
n Возможен особый синтаксис для полностью абстрактных классов
Зависимость
Особенности
n Изменение в одном классе (независимом) может влиять на другой класс (зависимый)
n Зависимый класс как-то использует независимый
n Отношение направленное по своей природе
Реализация на практике
n У зависимого класса есть операция, сигнатура которой содержит параметр, имеющий тип независимого класса
n В ходе выполнения операции зависимого класса иным способом получается и используется объект независимого класса
Метакласс
Особенности
n Метакласс – это класс, объектами которого являются классы
n Корневой метакласс – единственный объект, являющийся своим собственным классом
Реализация на практике
n Очень сильно зависит от языка
n В некоторых языках существует только один метакласс – корневой
Дата: 2019-07-30, просмотров: 210.