x++;
Console.WriteLine(x);
}
}
}
}
□ Подход с ключом компилятора. Для контроля переполнения во всем приложении может использоваться настройка компилятора /checked+. Чтобы проиллюстрировать это, удалим инструкцию checked из приведенного выше примера и попытаемся компилировать его, используя флаг /checked+. С его помощью можно включать и выключать проверку арифметического переполнения, изменяя состояние конфигурационных свойств на странице свойств проекта. Задание значения как true будет включать проверку переполнения.
При включенной проверке переполнения можно обсудить использование инструкции unchecked. По сути она предоставляет функциональность для произвольного исключения проверки выражений или блоков инструкций в то время, когда включена проверка во всем приложении. В примере ниже предыдущая инструкция заменяется инструкцией unchecked. Компиляция и выполнение этого кода будет создавать вывод, аналогичный выводу OverflowEX.java.
// OverflowEX.сs.
public class OverflowEX {
public static void Main(String[] args) {
sbyte X = 0;
for (int i = 0; i < 130; i++) {
unchecked { // можно также использовать unchecked(x++)
x++;
Console.WriteLine(x);
}
}
}
}
Входные и выходные данные
Возможность собрать входные данные из командной строки и вывести данные в командной строке является интегральной частью функциональности ввода/вывода в Java. Обычно в Java необходимо создать экземпляр объекта java.io.BufferedReader, используя поле System.in, чтобы извлечь ввод из командной строки. Ниже представлен простой класс Java — JavaEcho, который получает ввод с консоли и выводит его обратно, чтобы проиллюстрировать использование пакета Java.io для сбора и форматирования ввода и вывода:
// JavaEcho.java
import java.io.*;
public class JavaEcho {
public static void main(String[] args) throws IOException {
BufferedReader stdin = new BufferedReader(new InputSreamReader(System.in));
String userInput = stdin.readLine();
System.out.println('You said: ' + userInput);
}
}
Класс System.Console предоставляет методы в C#, которые дают аналогичную функциональность для чтения и записи из и в командную строку, Нет необходимости в каких-либо дополнительных объектах, класс Console предоставляет методы, которые могут читать целые строки, читать символ за символом и даже показывать описанный выше поток, из которого выполняется чтение. Важно отметить, что эту функциональность дает System.Console без создания экземпляра объекта Console. Фактически можно обнаружить, что невозможно создать экземпляр объекта Console. Члены класса Console кратко описаны в таблицах ниже:
| Открытые статические свойства (общие) | Описание |
|---|---|
Error | Получает стандартный выходной поток ошибок системы |
In | Получает стандартный входной поток ошибок системы |
Out | Получает стандартный поток вывода системы |
| Открытые статические методы (общие) | Описание |
|---|---|
OpenStandardError | Перезагруженный. Возвращает стандартный поток ошибок. |
OpenStandardInput | Перезагруженный. Возвращает стандартный поток ввода. |
OpenStandardOutput | Перезагруженный. Возвращает стандартный поток вывода. |
Read | Читает следующий символ из стандартного потока ввода. |
ReadLine | Читает следующую строку символов из Console.In, который по |
