User Эллеонора Керри
Эллеонора Керри
41 уровень

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, делает нас немного ближе к статусу Джава-Гуру!
Комментарии (36)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
R.I.N. Уровень 8, ---, Россия
5 января 2022
Может кому еще интересно будет про printf
Maikl68 Уровень 6, Хабаровск, Russian Federation
30 декабря 2021
public class educationalTwo { public static void main(String[] args) { int temperature = 30; double pi =3.14; String string = "Cтрока"; System.out.print(temperature,pi, string); } } не видит компилятор print(); почему?
Андрей Уровень 2, Ростов-на-Дону, Russian Federation
23 ноября 2021
то что нужно!
Artem Уровень 6, Новосибирск, Russian Federation
22 ноября 2021
А может кто показать конкретный пример printf? В коде
Anonymous #2788110 Уровень 13, Москва, Romania
20 ноября 2021
а вот интересно почему метод println не хочет принимать void из соседнего метода

   static void testOut(String name){
        System.out.println(testNew());
 }
    static void testNew(){
        System.out.println("Hello");
 }
Natali Catz Уровень 3
17 ноября 2021
Супер. спасибо
Коля Уровень 2, Киев, Ukraine
15 ноября 2021
Круто розвития и ученния ))👍
Валерий Уровень 19, Ялта, Россия
10 октября 2021
Сам сейчас на 9ом уровне. но всегда не мог понять как работает sout ) Знал, что выводит. JavaRush в какой-то статье писали я что мол это "метод поля класса system" на тот момент я вообще не понял, как у переменной может быть метод, она ведь переменная) и вот сейчас, во время урока про ссылки на методы в лямде стало понятно в чем сахар) есть класс System, в этом классе есть переменная out тип этой переменной PrintStream (PrintStream out) А у этого класса PrintStream есть методы разные, среди которых есть println. То есть, это поле в system для удобства добавили, чтобы каждый раз не импортировать класс PrintStream. без него получается можно в программе сделать так:

PrintStream print = new PrintStream();
print.println("hello world"); 
Вадим Уровень 2, Хабаровск, Russian Federation
4 октября 2021
У меня в первоначальных заданиях и были ошибки из-за того что писал print in, a не ln
Petr Savelyev Уровень 2, Russian Federation
28 сентября 2021
System.out.println(" Круто ");