
- •Глава 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
Глава 3. Типы данных, переменные и массивы 61_
3 и 42. Это все десятичные значения, т. е. числа с основанием 10. Имеются два других основания, которые можно использовать в целых литералах — восьмеричное (octal), с основанием 8, и шестнаццатеричное (hexadecimal), с основанием 16. Восьмеричные значения обозначены в Java ведущим нулем. Обычные десятичные числа не могут иметь ведущий нуль. Таким образом, казалось бы, правильное значение 09 даст ошибку компилятора, так как 9 — вне восьмеричного диапазона от 0 до 7. Более обычное основание для чисел, используемых программистами — шестнадцатеричное, которое четко согласуется с размерами слов по модулю 8, такими как 8, 16, 32 и 64 бита. Шестнадцатеричную константу обозначают с ведущими нулями (Ох или ОХ). Для представления шестнадцатеричного значения используются цифры от 0 до 9 и буквы латинского алфавита от А до F или от а до f (для значений от 10 до 15).
Целые литералы создают значение типа int, которое в Java является 32-разрядным целым числом. Так как Java строго типизирован, возникает вопрос, как можно назначить целый литерал одному из целых типов, такому как byte или long, без генерации ошибки несоответствия типов? К счастью, такие ситуации легко управляемы. Когда литеральное значение назначается byte- или short-переменной, никакая ошибка не генерируется, если это значение находится в пределах диапазона целевого типа. Аналогично, целый литерал может всегда назначаться переменной типа long. Однако, чтобы определить длинный литерал, нужно будет явно сообщить компилятору, что его значение имеет тип long. Это осуществляется добавлением в конец литерального значения символа L (в верхнем или нижнем регистре). Например, Ox7ffffffffffffffL ИЛИ 9223372036854775807L — самый большой long-
литерал.
Литералы с плавающей точкой
Числа с плавающей точкой представляют десятичные значения с дробным компонентом. Они могут быть выражены или в стандарной или научной (экспоненциальной) форме. Стандартная форма состоит из числового компонента, за которым следует десятичная точка, а далее — дробная компонента. Например, 2.0, 3.14159 и 0.6667 представляют правильные числа с плавающей точкой в стандартной системе обозначений. Научная форма представления использует стандартные обозначения — число с плавающей запятой плюс суффикс, который определяет степень 10, на которую должно быть умножено число. Экспонента обозначается буквой Е или е, за которой следует положительное или отрицательное десятичное число. Например: 6.022Е23, 314159Е-05 и 2е+100.
По умолчанию литералы с плавающей точкой Java имеют double-точность. Чтобы определить float-литерал, следует добавить в конец его записи символ F или f. Можно также явно определить double-литерал, добавляя D или d, но подобное определение будет избыточным. По умолчанию тип double
62 Часть I. Язык Java
занимает 64 бита памяти, в то время как менее точный тип с плавающей точкой требует только 32 бита.
Булевы литералы
Булевы литералы просты. Имеются только два логических значения — true и false. Значения true и false не конвертируются в какое-либо числовое представление. Литерал true в Java не равняется 1, а литерал false не равняется 0. В Java они могут быть назначены только переменным, объявленным типом boolean, или использоваться в выражениях с булевскими операциями.
Символьные литералы
Символы в Java — это индексы в наборе символов Unicode. Они являются 16-разрядными значениями, которые можно преобразовывать в целые числа и с которыми можно манипулировать целочисленными операциями, такими как сложение и вычитание. Литеральный символ представляется внутри пары одиночных кавычек. Все видимые символы ASCII могут быть непосредственно введены внутри кавычек, например: 'я', 'z' и '@'. Для символов, которые невозможно ввести непосредственно, существуют несколько escape-последовательностей, позволяющих ввести нужный символ, например,'\" — для самого символа одиночной кавычки, и '\n' — для символа newline. Имеется также механизм для прямого ввода значения символа в восьмеричном или шестнадцатеричном представлении. Для восьмеричной формы используют обратный слэш (\), за которым следует число из трех цифр. Например, '\141 — символ 'а'. Для шестнадцатеричиого представления нужно ввести обратный слэш с символом и (\u), затем четыре шестнадцатеричных цифры. Например, '\u006l' вводит символ 'а' набора ISO-LATIN-1, потому что старший байт нулевой, '\ua432' — это японский символ Katakana. В табл. 3.3 представлены символьные escape-последовательности.
Таблица 3.3. Escape-последовательности символов Escape-последовательность Описание
\ddd Восьмеричный символ (ddd)
\uxxxx Шестнадцатеричный символ UNICODE (xxxx)
\' Одиночная кавычка
\" Двойная кавычка
\\ Обратный слэш
\г Возврат каретки
\n Новая строка (известный так же, как перевод строки)