Какая разница между out.write() и out.print()

В моем сервлете я дал оба out.print и out.write. но оба печатаются в браузере.

Какая разница между этими двумя и когда использовать out.print и out.write?

Ответ 1

Основное отличие состоит в том, что out.write() взрывается, если вы передаете ему значение null:

String s = null;
out.print(s); // outputs the text "null"
out.write(s); // NullPointerException

Ответ 2

PrintWriter:

public void write (String s)

Напишите строку. Этот метод нельзя унаследовать от класса Writer потому что он должен подавлять исключения ввода-вывода.

метод печати имеет более высокий уровень абстракции.

public void print (String s)

Распечатайте строку. Если аргумент равен нулю, то строка "null" равна распечатаны. В противном случае строковые символы преобразуются в байты в соответствии с кодировкой символов по умолчанию платформы, и эти байты записываются точно так же, как метод write (int).

Надеюсь, что это поможет.

Ответ 3

Вывод переменной в вашем случае, скорее всего, относится к PrintWriter

Просто сравните описание записи...

public void write(String s)

Напишите строку. Этот метод нельзя унаследовать от класса Writer, поскольку он должен подавлять исключения ввода/вывода.

... с описанием println...

public void println(String x)

Распечатайте строку, а затем завершите линию. Этот метод ведет себя так, как будто он вызывает печать (String), а затем println().

... и напечатать...

public void print(String s)

Распечатайте строку. Если аргумент равен нулю, тогда печатается строка "null". В противном случае строковые символы преобразуются в байты в соответствии с кодировкой символов по умолчанию платформы, и эти байты записываются в точности способом записи (int).

В целом, я бы сказал, что методы печати работают на более высоком уровне абстракции и с которыми я предпочитаю работать при написании сервлетов.

Ответ 4

PrintWriter реализация передает разницу лучше, чем javadoc

public void print(String s) {
    if (s == null) {
        s = "null";
    }
    write(s);
}

Ответ 5

Существует три основных отличия:

1) Если вы попытаетесь напечатать нулевое значение строки с out.write(), она будет бросать NullPointerException, а out.print() просто напечатает NULL как строку.

 String name = null;
 out.write(name); // NullPointerException
 out.print(name); // 'Null' as text will be printed

2) out.print() может печатать логические значения, но out.write() не может.

boolean b = true;
out.write(b); // Compilation error
out.print(b); // 'true' will be printed 

3) Если вы используете out.write(), вы просто не можете разместить арифметический код операции, но out.print() предоставляет поддержку.

out.write(10+20); // No output will be displayed.
out.print(10+20); // Output '30' will be displayed. 

Ответ 6

Я просто знаю это так:

out.println() - метод javax.​servlet.​jsp.​JspWriter

out.write() - метод java.io.Writer

Ответ 7

Во-первых, вы не можете использовать javax.​servlet.​jsp.​JspWriter out в сервлете. Он должен использоваться в файле .jsp, потому что out - локальная переменная метода в методе _jspService(...) вашего файла .jsp.

Нет никакой разницы в использовании out.print() и out.write(). Оба используются для записи версии String данного объекта в буфер JspWriter.

Однако JspWriter.print() способен принимать множество аргументов, чем Writer.write().

JspWriter.print()

  • Объект
  • Строка
  • булева
  • char
  • char []
  • двойной
  • поплавок
  • ИНТ
  • длинный

Writer.write()

  • Строка
  • char
  • ИНТ

Ответ 8

Метод write() записывает только символы в поток (или консоль), но не печатает, а метод print() записывает и печатает его в потоке (или консоли).

System.out.write(97);
System.out.print('j');

первый оператор пишет символ 97 i.e 'a' на консоли, но не печатает, а второй оператор печатает 'a', который уже написан в потоке и 'j', который передается методом print().

Ответ 9

out.write(-) vs out.print(-)

Еще одно отличие: out.write(-) метод просто записывает данные или объект в браузер, как файл. Вы не можете написать какое-либо утверждение, например out.write(10 * 20);, но мы делаем это с помощью out.print(10 * 20);