Подтвердить что ты не робот

Java out.println() как это возможно?

Я видел некоторый код, например:

out.println("print something");

Я пробовал import java.lang.System;

но он не работает. Как вы используете out.println()?

4b9b3361

Ответ 1

статический импорт делает трюк:

import static java.lang.System.out;

или, наоборот, импортировать каждый статический метод и поле, используя

import static java.lang.System.*;

Добавление by @Steve C: обратите внимание, что @sfussenegger сказал это в комментарии к моему ответу.

"Использование такого статического импорта System.out не подходит для более простого кода с однократным запуском".

Поэтому, пожалуйста, не думайте, что он (или я) считаю, что это решение является хорошей практикой.

Ответ 2

PrintStream out = System.out;
out.println( "hello" );

Ответ 3

Ответ

@sfussenegger объясняет, как это сделать. Но я бы сказал, не делай этого!

Опытные Java-программисты используют и ожидают увидеть

        System.out.println(...);

а не

        out.println(...);

Статический импорт System.out или System.err - это (IMO) плохой стиль, потому что:

  • он нарушает принятую идиому и
  • это затрудняет отслеживание нежелательных трассировочных отпечатков, которые были добавлены во время тестирования и не удалены.

Если вы обнаружите, что делаете много результатов в System.out или System.err, я думаю, что лучше абстрагировать потоки в атрибутах, локальных переменных или методах. Это сделает ваше приложение более многоразовым.

Ответ 4

Хорошо, вы обычно используете

System.out.println("print something");

который не требует импорта. Однако, поскольку out является статическим полем внутри System, вы можете написать использование статического импорта следующим образом:

import static java.lang.System.*;

class Test {
    public static void main(String[] args) {
        out.println("print something");
    }
}

Посмотрите на ссылку . Обычно вы делаете это только в том случае, если используете много статических методов из определенного класса, например, я все время использую его для утверждений junit и easymock.

Ответ 5

out является PrintStream типом статической переменной (объекта) класса System и println() является функцией класса PrintStream.

class PrintStream
{
    public void println(){}    //member function
    ...
}

class System
{
    public static final PrintStream out;   //data member
    ...
}

Вот почему к статической переменной (объекту) out обращается имя класса System, которое дополнительно вызывает метод println() этого типа PrintStream (который является классом).

Ответ 6

Сначала вам нужно создать объект out. Подробнее об этом здесь:

    // write to stdout
    out = System.out;
    out.println("Test 1");
    out.close();

Ответ 7

вы можете видеть это также в сокетах...

PrintWriter out = new PrintWriter(socket.getOutputStream());

out.println("hello");

Ответ 8

просто импортировать:

import static java.lang.System.*;

Ответ 9

Или просто:

System.out.println("Some text");