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, делает нас немного ближе к статусу Джава-Гуру!
Комментарии (83)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Юлия Уровень 3
21 марта 2023
Спасибо, предельно логичное объяснение! Даже для полного "чайника" туман растаял).
Roman Remeev Уровень 2
11 марта 2023
Мне, как выпускнику МАИ при слове "консоль" представляется крыло самолета. Или, на крайний случай, огромный ТВ, висящий на стене. Было бы понятнее для начинающих, вроде меня, оперировать определением "экран". Или "монитор". ИМХО
Евгений Уровень 4 Expert
7 марта 2023
Просто мнение: мне не нравится использование слова "сущность" в контексте. Вы же прекрасны тем, что называете вещи своими именами. Аналогии зачастую вещь крайне субъективная, но бывают полезны, но они должны идти после естественного названия, чтобы мы привыкали думать правильно.
Bazylka Уровень 9
2 марта 2023
зразумела
Kyrylo Уровень 4 Expert
18 февраля 2023
изии
21 января 2023
В целом основную суть я понял.
Anonymous #3194614 Уровень 1
8 января 2023
доступно излагается материал,последовательно,понятно
Bebis Уровень 4
7 января 2023
По кирпичику собирается!) Спасибо!)
Юлия Уровень 2
6 января 2023
Спасибо, стало понятнее про метод вывода на консоль ))
Tarlan Уровень 2
5 января 2023
Здравствуйте! У меня было маленькое знание С#, которое я изучал 2 года назад, всего пару уроков. Недавно решил снова взяться за ум и достичь своей цели и изучить программирование начиная с Java. Данный сайт очень затягивает и статьи тоже очень информативные но при этом голова от них не кипит. Элеонора спасибо вам за статью!