JavaRush /Java блог /Java Developer /System.out.println

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, делает нас немного ближе к статусу Джава-Гуру!
Комментарии (113)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Тимур Уровень 3
3 марта 2024
Хорошая статься, спасибо!) Жаль Пайтон не привели в пример, может потому, что он явный конкурент))) А вообще, было бы круто иметь перед глазами древовидную карту, что во что вложено.
Сергей Ляшенко Уровень 3 Expert
21 февраля 2024
Спасибо! Познавательно!
Anonymous #3399542 Уровень 11
11 января 2024
Спасибо! Это ровно то, что я безуспешно пытался загуглить
Alexander Smith Уровень 2
2 января 2024
Познавательно!
Іван Шуберт Уровень 2
16 декабря 2023
Я в загалі тільки начав і хочу вивчати підскажіть я на вірній дорозі?
Сергей Уровень 4 Expert
6 ноября 2023
У Pascal самый короткий код. Красота.
Алибек Уровень 3
5 ноября 2023
хорошая статья
Ariya22 Уровень 2
29 октября 2023
не понятно, если честно, запутанно. то System - сущность, то Out - сущность. Сущность в сущности? как-то бы проще и нагляднее, без лишней информации. System - класс, как я поняла , отсек с информацией. В ней есть команды out, in и др. У этих комманд есть системы комманд, называемые методами типа println... Так, или нет?
Байрам Уровень 18 Expert
27 октября 2023
Хорошая статья, но не зная паскаль, было бы сложно усвоить.
OneTap* Qpad Уровень 2
21 октября 2023
было сложно углубляться прыгая по гипер ссылкам , но все таки конец был очевиден 11/10