
- •Глава 2
- •Глава 2. Обзор языка Java 31_
- •Глава 2. Обзор языка Java
- •Глава 2. Обзор языка Java 37
- •Глава 2. Обзор языка Java 39
- •Глава 2. Обзор языка Java 41
- •Часть I. Язык Java
- •Глава 2. Обзор языка Java 43_
- •Глава 2. Обзор языка Java 45_
- •Глава 2. Обзор языка Java 47
- •Глава 2. Обзор языка Java 49_
- •Часть I. Язык Java
- •Глава 2. Обзор языка Java 57
- •Глава 3
- •Глава 3. Типы данных, переменные и массивы 53
- •Глава 3. Типы данных, переменные и массивы _ 55
- •Глава 3. Типы данных, переменные и массивы
- •Глава 3. Типы данных, переменные и массивы 59_
- •Глава 3. Типы данных, переменные и массивы 61_
- •Глава 3. Типы данных, переменные и массивы
- •Глава 3. Типы данных, переменные и массивы 65_
- •Часть I. Язык Java
- •Глава 3. Типы данных, переменные и массивы 67_
- •Часть I. Язык Java
- •Глава 3. Типы данных, переменные и массивы 69_
- •Глава 3. Типы данных, переменные и массивы 71_
- •Глава 3. Типы данных, переменные и массивы 73_
- •Глава 3. Типы данных, переменные и массивы
- •Часть I. Язык Java
- •Глава 3. Типы данных, переменные и массивы _ 77_ Эта программа генерирует следующий вывод:
- •Глава 3. Типы данных, переменные и массивы 79
- •Часть I. Язык Java
- •Глава 3. Типы данных, переменные и массивы 81_
- •Глава 4
- •Глава 4. Операции 83
- •84 Часть I. Язык Java
- •Глава 4. Операции 85_
- •Глава 4. Операции 87_
- •88_ Часть I. Язык Java
- •Глава 4. Операции 89
- •Глава 4. Операции 91_
- •Глава 4. Операции 93_
- •Глава 4. Операции 95_
- •Глава 4. Операции 97_
- •Глава 4. Операции 99
- •Глава 4. Операции 101
- •Глава 4. Операции 103
- •104 Часть I, Язык Java
- •Глава 4. Операции 105
- •Глава 5
- •Глава 5, Управляющие операторы 107
- •Глава 5. Управляющие операторы 109
- •110 Часть I. Язык Java
- •Глава 5, Управляющие операторы 111
- •Глава 5. Управляющие операторы 113
- •Глава 5. Управляющие операторы
- •Глава 5. Управляющие операторы 117
- •118 Часть I. Язык Java
- •Глава 5. Управляющие операторы 119
- •Глава 5. Управляющие операторы 121
- •122 Часть I. Язык Java
- •Глава 5. Управляющие операторы 123
- •Глава 5. Управляющие операторы 125
- •Глава 5. Управляющие операторы 127
- •Глава 5. Управляющие операторы 129
- •Глава 5. Управляющие операторы
- •Глава 6
- •134 Часть I. Язык Java
- •Глава 6. Введение в классы 135
- •136 Часть I. Язык Java
- •Глава 6. Введение в классы _ 137
- •Глава 6. Введение в классы 139
- •Глава 6. Введение в классы
- •Глава 6. Введение в классы 143
- •Глава 6. Введение в классы 145
- •Глава 6. Введение в классы 147
- •Глава 6. Введение в классы 149
- •Глава 6. Введение в классы 151
- •154 Часть I. Язык Java
- •Глава 6. Введение в классы 155
- •Глава 6. Введение в классы 157
- •Глава 7
- •Глава 7. Методы и классы 159
- •Глава 7. Методы и классы . 161
- •Глава 7. Методы и классы • 163
- •164 Часть I. Язык Java
- •Глава 7. Методы и классы 165
- •Глава 7. Методы и классы 167
- •Глава 7. Методы и классы 169
- •Глава 7, Методы и классы 171-
- •Глава 7. Методы и классы 173
- •Глава 7. Методы и классы 775
- •Глава 7. Методы и классы 177
- •Глава 7. Методы и классы ' 179
- •Глава 7. Методы и классы 1_81_
- •Глава 7. Методы и классы 1_83
- •184 '• Часть I. Язык Java
- •Глава 7. Методы и классы . 185
- •Глава 7. Методы и классы 187
- •Глава 8
- •Глава 8. Наследование 191
- •Глава 8. Наследование 193
- •Глава 8, Наследование 195
- •Глава 8. Наследование 197
- •198 Часть I. Язык Java
- •Глава 8, Наследование 199
- •Глава 8. Наследование 201
- •202 Часть I. Язык Java
- •Глава 8. Наследование 203
- •Глава 8. Наследование 205
- •Глава 8. Наследование 207
- •Глава 8. Наследование 209
- •Глава 8. Наследование 211
- •Глава 8. Наследование 213
- •Глава 8. Наследование 215
- •Глава 8. Наследование 217
- •Глава 12
- •Глава 12. Ввод/вывод, апплеты и другие темы 303_
- •Глава 12. Ввод/вывод, апплеты и другие темы . 305
- •Глава 12. Ввод/вывод, алплеты и другие темы 307
- •Глава 12. Ввод/вывод, апплеты и другие темы 309
- •Глава 12. Ввод/вывод, апплеты и другие темы 311
- •Глава 12. Ввод/вывод, апплаты и другие темы 313
- •314 Часть I. Язык Java
- •Глава 12. Ввод/вывод, апплеты и другие темы 315
- •Глава 12. Ввод/вывод, апплеты и другие темы 317
- •Глава 12. Ввод/вывод, апплеты и другие темы 319
- •320 Часть I. Язык Java
- •Глава 12. Ввод/вывод, апплеты и другие темы 321
- •Глава 12. Ввод/вывод, апплеты и другие темы 323
- •324 Часть I. Язык Java
- •Глава 12. Ввод/вывод, апплеты и другие темы 325
- •326 Часть I. Язык Java
- •Глава 12. Ввод/вывод, апплегы и другие темы 327
Глава 5. Управляющие операторы 129
конец блока, маркированного меткой second, пропуская два оператора
println ().
// Использование break как цивилизованной формы goto, class Break {
public static void main(String args[]) { boolean t = true;
first: { second: { third: {
System.out.println("Перед оператором break."); if(t) break second; // выход из блока second
System.out.println("Данный оператор никогда не выполнится"); }
System.out.println("Данный оператор никогда не выполнится "); }
System.out.println("Данный оператор размещен после блока second."); } } }
Выполнение этой программы генерирует следующий вывод:
Перед оператором break.
Данный оператор размещен после блока second.
Одним из наиболее частых применений помеченного оператора break является выход из вложенных циклов. Например, в следующей программе внешний цикл выполняется только один раз:
// Использование break для выхода из вложенных циклов. class BreakLoop4 {
public static void main(String args[]) { outer: for(int i=0; i<3; i++) {
System.out.print("Итерация " + i + ": ") ; forfint j=0; j<100; j++) {
if(j == 10) break outer; // выйти из обоих циклов System.out.print(j + " "); }
System.out.println("Эта строка никогда не будет выведена"); }
System.out.println("Цикл завершен."); } }
Программа генерирует следующий вывод:
Итерация 0: 0123456789 Цикл завершен.
130 Часть I. Язык Java
Нетрудно заметить, что при прерывании внутреннего цикла до конца внешнего заканчиваются оба цикла.
Имейте в виду, что вы не можете сделать break-переход к любой метке, которая не определена для включающего блока. Например, следующая программа недопустима и не будет компилироваться:
// Эта программа содержит ошибку, class B-^akErr {
publ: static void main(String args[]) {
one: for(int i=0; i<3; i++) {
System.out.print("Итерация " + i + ": "); }
forfint j=0; j<100; j++) {
if(j == 10) break one; // He верно!
System.out.print(j + " ") ; } } } . . '
Так как цикл, помеченный как one, не включает оператор break, передать управление этому блоку невозможно.
Использование оператора continue
Иногда полезно начать очередную итерацию цикла пораньше. То есть нужно продолжить выполнение цикла, но прекратить обработку остатка кода в его теле для данной частной итерации. На самом деле это — goto-переход мимо следующих операций тела в конец блока цикла. Такое действие выполняет оператор continue. В циклах while И do while оператор continue вызывает передачу управления непосредственно условному выражению, которое управляет циклом. В цикле for управление переходит сначала к итерационной части оператора for и затем к условному выражению. Для всех трех циклов любой промежуточный код обходится.
Пример программы, которая использует continue для печати двух чисел на каждой строке, приведен ниже:
// Демонстрирует continue, class Continue {
public static void main(String args[]) { for(int i=0; i<10; i++) { System.out.print(i + " "}; if (i%2 == 0) continue; System.out.println(""); } } }
Глава 5. Управляющие операторы
_
Этот код использует операцию % (остаток по модулю), чтобы проверять, является ли i четным. Если это так, цикл продолжается без печати символа новой строки (newline). Вывод программы:
о 1
23 4 5 67 8 9
Как и в операторе break, в continue можно определить метку, указывающую, какой включающий цикл следует продолжить. Пример программы, которая использует continue для печати треугольной таблицы умножения от 0 до 9.
// Использование continue с меткой. class ContinueLabel {
public static void main(String args[]) { outer: for (int 1=0; i<10; i++) { for(int j=0; j<10; j++) { if(j > i) {
System.out.println(); continue outer; }
System.out.print(" " + (i * j)); } }
System.out.println(); } )
Оператор continue в этом примере завершает цикл, вычисляющий j, и продолжает со следующей итерации цикла, управляемого i. Вывод этой программы:
О 7 14 21 28 35 42 49 О 8 16 24 32 40 48 56 64 О 9 18 27 36 45 54 63 72 81
В использовании continue полезен крайне редко. Одна из причин этого заключается в том, что Java обеспечивает богатый набор операторов цикла,
132 Часть I, Язык Java
которые устраивают большинство приложений. Однако, для тех специальных ситуаций, в которых необходимо досрочное прекращение итерации, оператор continue обеспечивает структурный способ выполнения этой задачи.
Оператор return
Последний оператор управления — return. Он используется для явного возврата из метода, т. е. передает программное управление обратно в вызывающую программу. Оператор return относят к категории операторов перехода. Хотя его полное обсуждение должно подождать до обсуждения методов (см. гл. 7), здесь представлен краткий обзор return.
Оператор return можно использовать в любом месте метода для выполнения перехода обратно в вызывающую этот метод программу. Оператор return немедленно заканчивает выполнение метода, в котором он находится. Это иллюстрирует следующий пример:
// Демонстрирует return, class Return {
public static void main(String args [ ]) { boolean t = true;
System.out.println("Перед оператором return."};
if (t) return; // возврат в вызывающую программу
System.out.println("Этот оператор никогда не выполнится."); } }
Здесь return выполняет возврат к Java-системе во время выполнения, т. к. именно эта система вызывает метод main ( ) . Вывод этой программы:
Перед оператором return.
Можно заметить, что заключительный оператор println о не выполняется. В момент выполнения return управление передается обратно в вызывающую программу.
И последнее замечание. В предыдущей программе оператор if (t) необходим. Без него Java-компилятор выдал бы ошибку "недостижимый код", потому что он знал бы, что последний оператор println о никогда не будет выполняться. Чтобы предотвратить указанную ошибку, как раз и используется оператор if (он обманывает компилятор ради данной демонстрации).