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!”);
В свою очередь, код, который находится внутри метода, получает переданный нами текст и отправляет его на вывод. System.out.println - 2

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

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

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

Обычный вывод информации на консоль в Java запускает целую цепочку обращения к различным объектам и методам. Понимание того, что происходит во время вызова самой используемой команды в Java, делает нас немного ближе к статусу Джава-Гуру!
Комментарии (49)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Сергей Петухов Уровень 3, Penza, Russian Federation
19 июня 2022
ок
Oskar Shell Уровень 2, Владивосток, Russian Federation
9 июня 2022
Спасибо ☺️
Наталья Уровень 7, Амстердам, Россия
2 июня 2022
Стало понятнее про сущности, потоки и классы, спасибо!
Anonymous #3086699 Уровень 2, Москва, Russian Federation
1 июня 2022
Доходчиво и понятно! Спасибо!
Anonymous #3077333 Уровень 2, Казань, Russian Federation
16 мая 2022
sout "Hello World!";
Hasan Abdurahmonov Уровень 3, Москва, Russian Federation
25 апреля 2022
Huru
Natalia Wilde Уровень 2, Москва, Russian Federation
15 апреля 2022
Спасибо! Хоть где-то я нашла формулировку того, что такое метод! Учу Джаву еще в другом классе, и нам дали методы, документацию оракл, а что такое методы, не рассказали
Dmitrii Уровень 2, Челябинск
19 марта 2022
Крайне полезная информация. А то на самом начальном этапе с "hello world" сразу вопросы за те строки и значения, что позволяют запустить и вывести строку в консоль. Ну ввел я hello World или что-то еще из переменных и т.д. и т.п. а как и почему это работает не понятно было.
Anzo Уровень 2, Москва, Russian Federation
7 февраля 2022
не очень понятны эти самые потоки
R.I.N. Уровень 14, ---, Россия
5 января 2022
Может кому еще интересно будет про printf