System.out.println

Статья из группы Java Developer
участников
С чего начинается изучение языка программирования? С написания первой программы. Традиционно первая программа называется “Hello world”, и весь её функционал состоит из вывода на консоль фразы “Hello world!”. Такая простая программа дает возможность новому программисту почувствовать, что что-то да заработало. System.out.println - 1

“Hello world” на разных языках программирования

На разных языках программирования код будет разным: Pascal “Hello world”
begin
  writeln ('Hello, world.');
end.
C “Hello world”
int main() {
   printf("Hello, World!");
   return 0;
}
C# “Hello world”
static void Main(string[] args)
 {
     System.Console.WriteLine("Hello World!");
 }
Java “Hello world”
public static void main(String[] args) {
     System.out.println("Hello World!");
 }
Несмотря на различный код, у всех программ есть общая команда, которая непосредственно и выводит текст на консоль:
  • Pascal — writeln;
  • C — printf;
  • C# — System.Console.WriteLine;
  • Java — System.out.println.

Подробнее о выводе на консоль в Java

Как вы уже поняли, чтобы вывести текст на консоль, в Java необходимо воспользоваться командой System.out.println(). Но что значит этот набор символов? Для тех, кто знаком с языком Java и основными терминами ООП (для студентов, которые прошли курс JavaRush примерно до 15 уровня), ответ очевиден: “Для вывода текста на консоль мы обращаемся к статическому полю out класса System, у которого вызываем метод println(), и в качестве аргумента передаем объект класса String”. Если для вас смысл сказанного выше туманный, значит, будем разбираться! Данная команда состоит из трех слов: System out println. Каждое из них представляет собой какую-то сущность, которая предоставляет необходимый функционал для работы с консолью. System — сущность (в Java это называется классом), которая выполняет роль “моста”, соединяющего вашу программу со средой, в которой она запущена. out — сущность, которая хранится внутри System. По умолчанию ссылается на поток вывода на консоль. Подробнее о потоках ввода/вывода в Java можно прочитать здесь. println — метод, который вызывается у сущности out, чтобы обозначить способ, с помощью которого информация будет выведена на консоль. Давай разберемся с каждым элементом из этой цепочки подробней.

System

Как уже сказано, System — это некая сущность (класс), которая предоставляет разработчику возможности для общения с окружающей его средой: то есть, операционной системой, под которой запущена программа. Так как консоль — это приложение, установленное внутри операционной системы (командная строка, Shell для Windows и Terminal для Linux), становится понятно, для чего используется сущность System — для установки связи между нашей программой и “внешним миром”. Кроме соединения с консолью, у System есть и другой функционал:
  • Доступ к переменным окружения операционной системы:

    System.getenv("JAVA_HOME")
  • Возвращает значение переменной окружения JAVA_HOME, которая устанавливается в системных настройках ОС. При установке Java ты наверняка с ней сталкивался;

  • Немедленная остановка программы:

    System.exit(0)

    Прерывает выполнение программы путем остановки Java Virtual Machine;

  • Получение разделителя строк, который используется в этой операционной системе:

    System.lineSeparator()
  • Получение текущего времени системы в миллисекундах:

    System.currentTimeMillis();
    и еще много полезного функционала.
Данные примеры — это методы, которые выполняют определенные действия. Например, останавливают работу программы или возвращают запрашиваемое значение. Кроме методов, класс System содержит поля, которые хранят ссылки и на другие сущности:
  • out — уже знакомая нам ссылка на сущность потока вывода информации на консоль;
  • in — ссылка на сущность, которая отвечает за чтение вводимой информации с консоли.
  • err — очень похожа out, но предназначена для вывода ошибок.
Зная об этих сущностях внутри класса System, программист может их использовать в своих целях. В языке Java для обращения к элементу, который находится внутри другого элемента, используется оператор “.”. Таким образом, чтобы получить доступ к сущности потока вывода информации на консоль, нужно написать код:
System.out
Теперь разберемся, что из себя представляет этот out.

out

out — это имя переменной, которая хранит ссылку на объект (сущность) типа PrintStream. Этот объект настроен таким образом, чтобы вся информация, которая записывается в него, попадала на консоль. Так, объект out является экземпляром класса PrintStream, и у него можно вызвать соответствующие методы:
  • print() — вывод переданной информации. В качестве аргументов может принимать числа, строки, другие объекты;
  • printf() — форматированный вывод. Форматирует переданный текст, используя специальные строки и аргументы;
  • println() — вывод переданной информации и перевод строки. В качестве аргументов может принимать числа, строки, другие объекты;
  • Некоторые другие методы, которые нам не интересны в контексте этой статьи.
Как видим, разница между print() и println() невелика. Единственное, чем отличается println(), так это тем, что он вместо нас добавит переход на новою строку, что и делает его популярнее print(). Если мы три раза вызовем метод print() с аргументом на “Hello World!”, результатом будет такая строка:
Hello World!Hello World!Hello World!
В то время как метод println() каждый вывод будет призводить с новой строки:
Hello World!
Hello World!
Hello World!
Для вызова метода у объекта используется знакомый нам оператор “.”. Таким образом, вызов метода println() у сущности out выглядит так:
out.println()

println

Как и в многих других языках программирования, в Java println — это сокращение от “print line”. Мы уже знаем, что println() — это метод, который необходимо вызвать у сущности out. Если ты новичок в Java и в программировании в целом, то методы — это некий набор команд, которые логически объединены. В нашем случае, println() — это блок команд, который направляет текст в поток вывода и в конце добавляет перевод строки. В Java методы могут получать аргументы. Когда мы вызываем метод, аргументы передаются внутрь круглых скобок.
println(Hello World!);
В свою очередь, код, который находится внутри метода, получает переданный нами текст и отправляет его на вывод.

Построим логическую цепочку

Чтобы вывести текст на консоль, Java-программисту необходимо сделать следующее:
  1. Обратиться к сущности, которая способна соединить наше приложение и консоль — System;
  2. Обратиться к потоку вывода на консоль — System.out;
  3. Вызвать метод, который записывает информацию на консоль — System.out.println;
  4. Передать текст, который необходимо записать — System.out.println(“Hello World!”);

Подведем итоги

Обычный вывод информации на консоль в Java запускает целую цепочку обращения к различным объектам и методам. Понимание того, что происходит во время вызова самой используемой команды в Java, делает нас немного ближе к статусу Джава-Гуру!
Комментарии (114)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
raswet
Уровень 2
21 марта, 09:18
21032024
Тимур
Уровень 3
3 марта, 12:20
Хорошая статься, спасибо!) Жаль Пайтон не привели в пример, может потому, что он явный конкурент))) А вообще, было бы круто иметь перед глазами древовидную карту, что во что вложено.
Сергей Ляшенко
Уровень 3
Expert
21 февраля, 11:40
Спасибо! Познавательно!
Anonymous #3399542
Уровень 12
11 января, 11:10
Спасибо! Это ровно то, что я безуспешно пытался загуглить
Alexander Smith Java Developer
2 января, 10:47
Познавательно!
Іван Шуберт
Уровень 2
16 декабря 2023, 20:32
Я в загалі тільки начав і хочу вивчати підскажіть я на вірній дорозі?
GODISGREATAMEN
Уровень 16
22 декабря 2023, 21:51
Так!
Сергей
Уровень 4
Expert
6 ноября 2023, 12:38
У Pascal самый короткий код. Красота.
Goodsmack
Уровень 6
13 декабря 2023, 10:25
А ещё есть Python))
print("Hello, world")
Сергей
Уровень 4
Expert
26 декабря 2023, 00:10
Прикольно. Питон поднялся в моих глазах, в ровень с первым делением. )
Scarry-77
Уровень 12
2 января, 17:45
Зато, разобравшись с командой вывода в Джаве или С# вы лучше поймете само устройство вывода)
Алибек
Уровень 3
5 ноября 2023, 11:22
хорошая статья
Ariya22
Уровень 2
29 октября 2023, 05:14
не понятно, если честно, запутанно. то System - сущность, то Out - сущность. Сущность в сущности? как-то бы проще и нагляднее, без лишней информации. System - класс, как я поняла , отсек с информацией. В ней есть команды out, in и др. У этих комманд есть системы комманд, называемые методами типа println... Так, или нет?
alsii
Уровень 4
14 ноября 2023, 23:04
Нет, не так... System - сущность (класс), out - статическая переменная этой сущности. В этой переменной хранится экземпляр другой сущности (PrintStream). У сущности PrintStream есть методы: println и другие. Сущность в сущности? Да, именно так. Переменные сущностей (их еще называют "свойства"), могут хранить разные значения, в том числе и экземпляры других сущностей.
Никита
Уровень 8
9 декабря 2023, 15:22
Имеет древовидную структуру - если так проще воспринимать. На примере квартиры - ты не можешь просто взять и зайти в квартиру с улицы. Тебе нужно зайти в дом(system), подняться на этаж(out), открыть дверь и зайти в квартиру(print...)
Байрам
Уровень 18
Expert
27 октября 2023, 12:37
Хорошая статья, но не зная паскаль, было бы сложно усвоить.