
- •Глава 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. Управляющие операторы 113
i меньше 10
i меньше 10
i меньше 10
i равно 10 или больше
i равно 10 или больше
Можно видеть, что выполнение проходит через каждый case, пока не встречается оператор break (или не будет достигнут конец оператора switch).
Хотя предшествующий пример придуман, конечно, ради иллюстрации, пропуск оператора break имеет много практических приложений в реальных программах. Чтобы показать более жизненное использование switch, рассмотрим следующий вариант примера с временами года, приведенного ранее. Эта версия использует switch, чтобы обеспечить более эффективную реализацию.
// Улучшенная версия программы с временами года, class Switch {
public static void main(String args[]) { int month = 4; String season; switch (month) { case 12: case 1: case 2:
season = "Зима"; break/case 3: case 4: case 5:
season = "Весна"; break; case 6: case 7 : case 8:
season = "Лето"; break; case 9: case 10: case 11:
season = "Осень"; break/default:
season = "Непонятный месяц"; }
System.out.println("Апрель это " + season + "."); } }
114 Часть I. Язык Java
Вложенные siv/fc/т-операторы
Вы можете использовать switch как часть последовательности операторов некоторого внешнего switch. Это называется вложенным switch. Так как switch-оператор определяет свой собственный блок, никакие конфликты между case-метками во внутреннем и внешнем switch не возникают. Например, следующий фрагмент совершенно законен:
switch(count) { case 1:
switch(target) { // вложенный switch
case 0:
System.out.println("target равен нулю"); break;
case 1: // нет конфликтов с внешним switch
System.out.print In("target равен единице"); break; }
break; case 2: //.. .
Здесь утверждение с меткой case 1 во внутреннем switch не находится в противоречии с утверждением case i во внешнем switch. Переменная count сравнивается только с case-меткой на внешнем уровне. Если count равна 1, то переменная target сравнивается с внутренней case-меткой. Обратите внимание на три важные особенности оператора switch.
П switch отличается от if тем, что может проверять только равенство (своей переменной с case-метками), тогда как if может оценивать любой тип булевского выражения. То есть, switch отыскивает только соответствие между значением выражения и одной из его case-меток.
П Никакие две case-метки внутри switch не могут иметь идентичных значений. Однако операторы switch, включенные во внешний switch, могут, конечно, иметь общие case-метки с внутренним switch.
О Оператор switch обычно более эффективен, чем набор вложенных if.
Последний пункт особенно интересен, потому что он дает возможность понять, как работает компилятор Java. Когда компилируется оператор switch, компилятор Java просматривает каждую из case-констант и создает "таблицу переходов", которая будет использоваться для выбора пути выполнения в зависимости от значения выражения. Поэтому, если нужно выбирать среди большой группы значений, оператор switch, выполнится намного быстрее, чем эквивалентная кодированная логика, использующая последовательности if-eise. Компилятор может делать это, т. к. он знает, что все case-константы имеют один и тот же тип и просто должны быть проверены на