
- •Глава 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
Глава 4. Операции 105
Использование круглых скобок
Круглые скобки повышают старшинство операций, которые находятся внутри них. Это часто необходимо для получения желаемого результата. Например, рассмотрим следующее выражение:
а » b + 3
Это выражение сначала добавляет з к ь и затем сдвигает вправо а на полученное в результате этого сложения число позиций. Данное выражение можно переписать, используя избыточные круглые скобки, например, так:
а » (Ь + 3)
Однако, если вы хотите сначала сдвинуть а право на ь позиций и затем добавить 3 к этому результату, вам нужно будет расставить скобки в выражение следующим образом:
(а » Ь) +3
В дополнение к изменению нормального старшинства операций, круглые скобки иногда можно использовать просто для прояснения выражения. Для постороннего читателя вашего кода сложное выражение, возможно, будет трудно понять. Добавление избыточных, но что-то проясняющих круглых скобок в сложных выражениях, поможет избежать путаницы. Например, какое из следующих выражений легче для чтения?
a|4+c»b&7||b>a%3
(а I («4 + с) » Ь) & 7)) | | (Ь > (а % 3) )
С другой стороны, круглые скобки (избыточные или нет) не ухудшают эффективности вашей программы. Поэтому их добавление для уменьшения неоднозначности не воздействует негативно на вашу программу.
Глава 5
Управляющие операторы
Управляющие операторы используются в языках программирования для того, чтобы продвигать и разветвлять поток выполнения, основываясь на изменениях состояния программы. Операторы программного управления Java можно разделить на следующие категории: ветвление, повторение (итерация) и переход. Операторы ветвления выбирают различные пути работы программ, основываясь на результатах вычисления выражений или на состояниях переменных. Операторы повторения дают возможность выполнять несколько раз операторы программы (эти операторы формируют циклы). Операторы перехода позволяют выполнять программу непоследовательно: В этой главе рассматриваются все операторы управления Java.
Если вы знаете C/C++, то операторы управления вам знакомы. Операторы управления Java почти идентичны их C/C++ аналогам. Однако существует несколько различий, особенно в операторах continue и break.
Операторы выбора Java
Java поддерживает два оператора выбора if и switch. Эти операторы позволяют управлять потоком выполнения программы, основываясь на условиях, проверяемых только во время выполнения. Если ваш прошлый опыт в программировании не включает C/C++, вы будете приятно удивлены мощью и гибкостью этих двух операторов.
Оператор if
Оператор if был представлен в главе 2. Здесь он рассматривается подробнее, if — это оператор условного перехода. Он направляет выполнение программы по двум разным маршрутам. Общая форма оператора if:
Глава 5, Управляющие операторы 107
if (condition) statement!; else statement^;
где statements— одиночный или составной (включенный в фигурные скобки, т. е. в блок) оператор маршрута N (N — номер маршрута, для if он равен 1 или 2); condition — любое выражение, которое возвращает значение типа boolean. Предложение else — необязательное.
Оператор if работает так: если condition имеет значение true, то выполняется stateznenti, Иначе — ВЫПОЛНЯСТСЯ statement^ (бСЛИ ОН Присутствует).
Оба оператора вместе не будут выполняться ни в коем случае. Например, рассмотрим следующий фрагмент:
int a, b;
// ...
if (а < Ь) а = 0;
else b = 0;
Здесь, если а меньше, чем ь, то а устанавливается в нуль, иначе — ь устанавливается в нуль. Обе переменные сразу в нуль никогда не устанавливаются.
Чаще всего для управления оператором if используется выражение, включающее операции отношений. Однако в этом нет технической необходимости. Можно управлять оператором if, используя одиночную boolean переменную, как показано в следующем кодовом фрагменте:
boolean dataAvailable;
//....
if (dataAvailable)
ProcessData(); else
waitForMoreData(); '
Помните, что только один оператор может появляться сразу после if или else. Если нужно включить в ветви большее количество операторов, то следует создать блок, как сделано, например, в следующем фрагменте:
int bytesAvailable;
//....
if (bytesAvailable > 0) {
ProcessData ();
bytesAvailable -= n;
} else
waitF.orMoreData () ;
Здесь будут выполняться оба оператора в блоке if, если bytesAvailable больше нуля.
108 Часть I. Язык Java
Некоторые программисты находят удобным включать фигурные скобки в каждую ветвь оператора if, даже когда там имеется только один оператор. Это облегчает последующее добавление других операторов в ветви if, и не нужно волноваться относительно пропуска фигурных скобок. Действительно, их пропуск при определении блока, когда они необходимы, — обычная причина ошибок. Например, рассмотрим следующий кодовый фрагмент:
int bytesAvailable;
// ...
if (bytesAvailable > 0) {
ProcessData();
bytesAvailable -= n;
} .
else
waitForMoreData() ;
bytesAvailable = n;
Кажется ясно, что, судя по уровню отступа, оператор bytesAvailable = п,-предназначался для выполнения внутри предложения else. Однако, как вы помните, пробелы незначимы для Java, и у компилятора нет никакого способа распознать ваши намерения. Этот код будет скомпилирован без предупреждений, но во время выполнения будет вести себя неправильно. Предшествующий пример исправляется так:
int bytesAvailable;
// . . .
if (bytesAvailable > 0) {
ProcessData();
bytesAvailable -= n;
) else {
waitForMoreData();
bytesAvailable = n;
}
Здесь всего-навсего вставлены пропущенные блочные скобки. Вложенные if
Вложенный if — это оператор if, который размещен внутри другого if- или else-оператора. Вложение if — обычный прием в программировании. Когда вы вкладываете if, нужно помнить, что оператор else всегда относится к самому близкому оператору if, который находится в том же блоке, что и else. Например:
if(i == 10} {
if (j < 20) а = b;