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

Запись на консоль с помощью System.out и PrintWriter

Во время чтения о Java I/O я понял, что есть два способа, которыми я могу записать стандартный вывод.

Ниже приведен фрагмент, в котором используются обе методики

import java.io.*;
public class ConsoleIO {

    public static void main(String[] args) {
        System.out.println("Method 1");

        PrintWriter writer = new PrintWriter(System.out);
        writer.println("Method 2");
        writer.flush();
        writer.close();
    }
}

Есть ли преимущества в производительности от использования одного над другим?

4b9b3361

Ответ 1

Быстрый Google показал поток на Coderanch, который был полезен.

Существует несколько других способов написания консолей, но, похоже, нет никакой реальной выгоды от использования того или другого, кроме как меньше кода для записи, и что создание нового объекта PrintWriter займет больше памяти (в конечном итоге).

PrintWriter может писать в другие источники, а не только в консоль, он может писать HttpResponse, например, когда System.out.println записывает только на консоль.

Ответ 2

разные два подхода:

  • Когда вы используете System.out.print(""), вы действительно использовали экземпляр PrintStream.
  • На самом деле разница заключается в двух классах PrintStream и PrintWriter, которые:

    • PrintStream - поток байтов, а PrintWrite - поток символов.
    • PrintStream использует кодировку по умолчанию платформы, а при PrintWriter вы можете передать OutputStreamWriter с определенной кодировкой. для образца: PrintStream stream = new PrintStream(output); PrintWriter writer = new PrintWriter(new OutputStreamWriter(output, "UTF-8"));

Вы можете выбрать подход с вашими требованиями.

Ответ 3

Существует не только два способа, вы также можете найти другие способы сделать это. Например, используя класс Consol для пакета io, и для него могут присутствовать еще несколько классов.

Но если вы просто хотите напечатать что-то в консоли, я думаю, что первый метод - лучший. Почему вы должны идти от 4 до 5 строк кода, если это можно сделать всего в 1 строке.

Ответ 4

Использование:

System.out.println("Method 1");

Это статический вызов, который быстрее, чем другой. Кроме того, вы не создаете никаких дополнительных объектов, таких как объект PrinterWriter, во втором варианте.

Ответ 5

Использование PrintWriter делает выход интернационализированным - потому что могут быть указаны кодировки, такие как UTF-8. Классы PrintWriter и PrintStream должны использоваться только для таких действий, как выход на консоль - не для сетевого программирования, - из-за их зависящей от платформы обработки прерываний линии и проглатывания условий исключения. Вторая глава "Java Network Programming" хорошо обсуждает это.