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 , который по |