
- •Глава 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
Глава 12. Ввод/вывод, алплеты и другие темы 307
После того как этот оператор выполнится, объектная переменная Ьг станет символьным потоком, связанным с консолью через system, in.
Чтение символов
Для чтения символа из BufferedReader используйте метод reado. Версия read (), которую мы будем применять, такова:
int read() throws lOException
При каждом вызове read о читает символ из входного потока и возвращает его в виде целочисленного значения. Когда read о сталкивается с концом потока, то возвращает — 1. Как вы видите, он может выбрасывать исключение ввода/вывода (1/О-исключение — lOException).
Следующая программа демонстрирует reado, читая символы с консоли, пока пользователь не напечатает "q":
// Использует BufferedReader для чтения символов с консоли, import java.io.*;
class BRRead { v
public static void main(String args[])
throws lOException {
char c;
BufferedReader br = new
BufferedReader(new InputStreainReader(System.in)); System.out.println("Введите символы, 'q' - для завершения.");
// чтение символов do {
с = (char) br.read(); System.out.println(с); ) while(с != 'q'); } }
Результат выполнения этого примера:
Введите символы, 'q' - для завершения.
123abcq
1
2
3
а
b
с
Ч
308 __^_____ Часть I. Язык Java
Этот вывод может выглядеть немного иначе, чем вы ожидали, потому что System, in по умолчанию — буферизированная строка. Это означает, что никакой ввод фактически не пересылается программе, пока вы не нажмете клавишу <Enter>. He трудно предположить, что это не придает методу read() особенной ценности для интерактивного консольного ввода.
Чтение строк
Для чтения строки, вводимой с клавиатуры, используйте версию метода readLineO, который является элементом класса BufferedReader. Его общая форма:
String readLineO throws lOException
Как видно, он возвращает string-объект.
Следующая программа демонстрирует BufferedReader И метод readLine () .
Она читает и отображает строки текста, пока вы не введете слово "stop":
// Читает строки с консоли, используя BufferedReader. import java.io.*;
class BRReadLines f
public static void main(String args[])
throws lOException {
// создать BufferedReader, используя System.in BufferedReader br = new BufferedReader(new
InputStreamReader(System.in)); String str;
System.out.println("Введите строки текста.");
System.out.println("Введите 'stop' для завершения.");
do {
str = br.readLine(); System.out.println(str); } while(!str.equals("stop")); } }
Следующий пример демонстрирует крошечный текстовый редактор. Сначала он создает массив string-объектов и затем считывает строки текста, сохраняя каждую из них в массиве. Он будет читать до сотой строки или до тех пор, пока вы не введете строку "stop". Для чтения с консоли используется объект класса BufferedReader (переменная рг).
// Крошечный редактор. import java.io.*;
Глава 12. Ввод/вывод, апплеты и другие темы 309
class TinyEdit {
public static void main(String args[])
throws lOException {
// Создать BufferedReader-объект,используя System.in BufferedReader br = new BufferedReader(new
InputStreamReader(System.in)); String str[] = new String[100];
System.out.println("Введите строки текста.");
System.out.println("Введите 'stop' для завершения."};
for(int i=0; i<100; i++) {
str[i] = br.readLine();
if(str[i].equals("stop")) break; }
System.out.println("ХпВот ваш файл:");
// Вывести строки на экран, forfint i=0; K100; i++) {
if(str[i].equals("stop")) break; System.out.println(str[i]);
} •
} }
Пример вывода этой программы:
Введите строки текста.
Введите 'stop' для завершения.
Это строка 1.
Это строка 2.
Java облегчает работу со строками.
Создать String-объекты.
stop
Вот ваш файл:
Это строка 1.
Это строка 2.
Java облегчает работу со строками.
Создать String-объекты.
Запись консольного вывода
Консольный вывод легче всего выполнить с помощью описанных ранее методов print () и println (), которые используются в большинстве примеров данной книги. Эти методы определены классом Printstream (который явля-
310 Часть I. Язык Java
ется типом (классом) объекта System.out). Хотя system.out — байтовый поток, его использование для вывода в простых программах все еще допустимо. Его символьная альтернатива описана в следующем разделе.
ПОСКОЛЬКУ PrintStream — ВЫХОДНОЙ ПОТОК, ПрОИЗВОДНЫЙ ОТ OutputStream, ОН
также реализует метод нижнего уровня write о. Его можно использовать для записи на консоль. Самая простая форма write (}, определенная в PrintStream, имеет ВИД!
void write(int byteval) throws lOException
Этот метод записывает в файл байт, указанный в параметре byteval. Хотя byteval объявлен как целое число, записываются только младшие восемь битов. Ниже показан короткий пример, который использует write о для вывода на экран символа "А", за которым следует символ newline:
// Демонстрирует System.out.write(). class WriteDemo {
public static void main(String args[]) { int b;
b = 'A';
System.out.write(b); System.out.write('\n'); } }
Вы не часто будете применять write () для выполнения консольного вывода (хотя это может быть полезно в некоторых ситуациях), потому что использовать print () и println () намного легче.
Класс PrintWriter
Хотя использование объекта System.out для записи на консоль все еще допустимо в Java, его применение рекомендуется главным образом для отладочных целей или для демонстрационных программ, типа тех, которые показаны в этой книге. Для реальных Java-программ для записи на консоль рекомендуется работать с потоком типа PrintWriter. PrintWriter — это один из классов символьного ввода/вывода. Использование подобного класса для консольного вывода облегчает интернационализацию вашей программы.
PrintWriter определяет несколько конструкторов. Мы будем использовать следующий:
PrintWriter(OutputStream outputstream, boolean flushOnNewline)
Здесь OutputStream — объект ТИПа OutputStrcam; flushOnNewline — буЛСВСКИЙ
параметр, используемый как средство управления сбрасыванием выходного