В примере ниже показано, как можно вывести текст и данные различного типа, используя различные методы:
System.out.printf("Число с точностью: %.2f", 3.14159);
Простейший пример использования System.out.println() выглядит так:
System.out.println("Привет, мир!");
В результате выполнения этого кода в консоль будет выведено сообщение: Привет, мир!
int a = 5;
System.out.println(a);
Этот код выведет число 5 в консоль. Метод println() применяет к числовым значениям метод toString(), который возвращает строковое представление чисел.
String name = "Алексей";
System.out.println("Привет, " + name + "!");
Этот код выведет сообщение: Привет, Алексей!
System.out.print("Число: ");
System.out.print(42);
System.out.print(", значение.");
Этот код выведет: Число: 42, значение.
for (int i = 0; i <= 100; i++) {
System.out.print("\rПрогресс: " + i + "%");
Thread.sleep(100);
}
Этот код обновляет строку в консоли, показывая текущий процент выполнения задачи, перезаписывая строку с каждым новым значением.
Разница между System.out.print() и System.out.printf()
int x = 10;
System.out.print("Значение: " + x);
Этот метод не поддерживает выравнивание, точность для чисел с плавающей точкой и другие параметры форматирования. Результат зависит от ручного построения строки.
double pi = 3.14159;
System.out.printf("Число π с двумя знаками после запятой: %.2f", pi);
Символ %.2f означает, что число будет округлено до двух знаков после запятой. Также можно указывать ширину поля, выравнивание, дополнять нулями и комбинировать различные типы:
String name = "Java";
int version = 17;
System.out.printf("%-10s v%d", name, version);
Здесь %-10s задаёт выравнивание строки по левому краю в пределах 10 символов. Такой контроль невозможен через print().
Как вывести переменные разных типов с помощью printf
int age = 30;
String name = "Анна";
double salary = 52340.75;
System.out.printf("Имя: %s, Возраст: %d, Зарплата: %.2f%n", name, age, salary);
Чтобы задать ширину поля, указывается число перед типом: %10s
– строка шириной 10 символов. Для выравнивания по левому краю добавляется минус: %-10s
.
Формат %04d
добавляет ведущие нули: например, System.out.printf("%04d", 7);
выведет 0007
.
Если необходимо отобразить символ процента, используется %%
.
Для представления чисел в шестнадцатеричном виде применяется %x
или %X
, а для экспоненциальной формы – %e
.
char grade = 'A';
float average = 89.537f;
System.out.printf("Оценка: %c, Средний балл: %.1f%n", grade, average);
Наиболее распространённый способ – использование %.nf
, где n
– количество знаков после запятой.
double pi = 3.1415926535;
System.out.printf("Число Пи: %.2f%n", pi); // Число Пи: 3.14
Для хранения результата в строке используют String.format()
:
String formatted = String.format("%.3f", pi);
System.out.println("Форматировано: " + formatted); // Форматировано: 3.142
Если требуется округление без форматирования строки, применяют BigDecimal
:
import java.math.BigDecimal;
import java.math.RoundingMode;
BigDecimal value = new BigDecimal("2.7182818284");
value = value.setScale(4, RoundingMode.HALF_UP);
System.out.println("Округлённое значение: " + value); // Округлённое значение: 2.7183
Сравнение подходов:
Метод | Назначение | Пример |
---|---|---|
printf | System.out.printf("%.1f", 12.345); |
|
String.format | Создание отформатированной строки | String.format("%.1f", 12.345); |
BigDecimal | Математическое округление | new BigDecimal("12.345").setScale(1, RoundingMode.HALF_UP); |
- По умолчанию он направлен в консоль, как и
System.out
, но может быть переопределён черезSystem.setErr()
. - Используется для печати сообщений, которые требуют внимания: ошибки, исключения, некорректные входные данные.
Пример простого использования:
public class ErrorExample {
public static void main(String[] args) {
System.out.println("Начало выполнения программы");
System.err.println("Ошибка: неверный формат входных данных");
System.out.println("Продолжение выполнения");
}
}
Рекомендуется использовать System.err
в следующих случаях:
- Обработка исключений, когда нет логгера:
try {
int x = Integer.parseInt("abc");
} catch (NumberFormatException e) {
System.err.println("Ошибка преобразования строки в число: " + e.getMessage());
}
- Проверка аргументов командной строки:
if (args.length == 0) {
System.err.println("Ошибка: не переданы аргументы");
System.exit(1);
}
Для переадресации потока ошибок в файл используйте:
java ProgramName 2> errors.log
-
Цикл
for
:for (int i = 0; i < 5; i++) { System.out.println("Повтор строки номер " + (i + 1)); }
-
Цикл
while
:int count = 0; while (count < 3) { System.out.println("Пример с while"); count++; }
Полезен, когда количество повторений зависит от условий, вычисляемых во время выполнения.
-
Цикл
do-while
:int i = 0; do { i++; } while (i < 2);
- Используйте переменные цикла для динамического изменения текста.
- Избегайте жёстко заданных значений: заменяйте их переменными или константами.
- Для большого количества повторов предпочтительнее
for
– он читаемее и короче.
Циклы особенно полезны при генерации шаблонных сообщений, отладочных логов и тестовых данных. Избыточные вызовы System.out.println()
вручную – это признак неэффективного подхода.