
- •Глава 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. Операции 101
Таблица 4.6. Применение логических операций
А |
В |
A|B |
A&B |
АЛВ |
!A |
false |
false |
false |
false |
false |
true |
true |
false |
true |
false |
true |
false |
false |
true |
true |
false |
true |
true |
true |
true |
true |
true |
false |
false |
Программа почти такая же, как в примере с классом BitLogic, показанном ранее, но оперирующая с логическими значениями типа boolean вместо двоичных битов:
// Демонстрирует операции булевой логики. • class BoolLogic (
public static void main(String args[]) {
boolean a = true;
boolean b = false; ч
boolean с = a | b;
boolean d = a & b;
boolean e = а Л b;
boolean f = (!a & b) I (a & !b);
boolean g = !a;
System.out.printlnt" a = " + a)
System.out.println(" b = " + b)
System.out.println(" a|b = " + c)
System.out.println(" a&b = " + d)
System.out.println(" aAb = " + e)
System.out.println("!a&b|a&!b = " + f)
System.out.println(" !a = " + g) } }
После выполнения этой программы вы заметите, что те же логические правила применяются как к booiean-значениям, так и к битам. Как можно видеть в следующем выводе, строковым представлением booiean-значений в Java является одно из постоянных значений — true или false:
а = true b = false а | b = true a&b = false аЛЬ = true a&bIa&!b = true !a = false
•\Q2 Часть I. Язык Java
Короткие логические операции
Java обеспечивает две интересные булевские операции, которые нельзя найти в большинстве других машинных языков. Это вторые версии булевских операций И и ИЛИ, известные как укороченные (short-circuit) логические операции. Как можно видеть в предшествующей таблице, односимвольная операция ИЛИ приводит к true-результату, когда операнд а — true, независимо от того, каков операнд в. Точно так же операция И приводит к false-результату, когда а — false, независимо от того, каков в. Если вы используете двухзначные (и и &&), а не однозначные (| и &) формы логических операций ИЛИ и И, Java вообще не будет выполнять оценку правого операнда перед вычислением всего выражения, так как результат выражения определяется одним , левым операндом. Это полезно, когда правильное функционирование правого операнда зависит от того, является ли левый операнд true или false. Например, следующий кодовый фрагмент показывает, как вы можете воспользоваться преимуществом сокращения логической оценки, чтобы заранее обеспечить правильное выполнение операции деления (обходя любые оценки ее второго операнда во время выполнения):
if (denom != О && num / denom > 10)
Так как используется короткая форма операции И (&&), нет никакого риска порождения исключительной ситуации при работе программы, когда denom окажется нулевым. Если бы эта строка программы была написана с использованием версии И, состоящей из одного знака &, то во время выполнения программы нужно было бы оценивать обе стороны соответствующего выражения, что при нулевом denom вызвало бы исключительную ситуацию.
Использование короткой формы И и ИЛИ стало стандартной практикой в случаях использования булевской логики, оставляя версии с одиночным символом исключительно для поразрядных операций. Однако имеются исключения из этого правила. Например, рассмотрим следующий оператор:
if(с==1 & е++ < 100) d = 100;
Использование однозначной операции (&) гарантирует здесь, что операция инкремента будет применяться к е вне зависимости от того, равна переменная с единице или нет.
Операция присваивания
Вы уже использовали операцию присваивания, начиная с главы 2. Теперь пришло время взглянуть на нее более формально. Операция присваивания (назначения) (assignment operator) — это одиночный знак равенства (=). Операция присваивания работает в Java во многом так же, как в любом другом машинном языке. Она имеет следующую общую форму:
var = expression;