В моем сервлете я дал оба out.print
и out.write
. но оба печатаются в браузере.
Какая разница между этими двумя и когда использовать out.print
и out.write
?
В моем сервлете я дал оба out.print
и out.write
. но оба печатаются в браузере.
Какая разница между этими двумя и когда использовать out.print
и out.write
?
Основное отличие состоит в том, что out.write()
взрывается, если вы передаете ему значение null:
String s = null;
out.print(s); // outputs the text "null"
out.write(s); // NullPointerException
public void write (String s)
Напишите строку. Этот метод нельзя унаследовать от класса Writer потому что он должен подавлять исключения ввода-вывода.
метод печати имеет более высокий уровень абстракции.
public void print (String s)
Распечатайте строку. Если аргумент равен нулю, то строка "null" равна распечатаны. В противном случае строковые символы преобразуются в байты в соответствии с кодировкой символов по умолчанию платформы, и эти байты записываются точно так же, как метод write (int).
Надеюсь, что это поможет.
Вывод переменной в вашем случае, скорее всего, относится к PrintWriter
Просто сравните описание записи...
public void write(String s)
Напишите строку. Этот метод нельзя унаследовать от класса Writer, поскольку он должен подавлять исключения ввода/вывода.
... с описанием println...
public void println(String x)
Распечатайте строку, а затем завершите линию. Этот метод ведет себя так, как будто он вызывает печать (String), а затем println().
... и напечатать...
public void print(String s)
Распечатайте строку. Если аргумент равен нулю, тогда печатается строка "null". В противном случае строковые символы преобразуются в байты в соответствии с кодировкой символов по умолчанию платформы, и эти байты записываются в точности способом записи (int).
В целом, я бы сказал, что методы печати работают на более высоком уровне абстракции и с которыми я предпочитаю работать при написании сервлетов.
PrintWriter
реализация передает разницу лучше, чем javadoc
public void print(String s) {
if (s == null) {
s = "null";
}
write(s);
}
Существует три основных отличия:
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.
Я просто знаю это так:
out.println()
- метод javax.servlet.jsp.JspWriter
out.write()
- метод java.io.Writer
Во-первых, вы не можете использовать javax.servlet.jsp.JspWriter out
в сервлете. Он должен использоваться в файле .jsp
, потому что out
- локальная переменная метода в методе _jspService(...)
вашего файла .jsp
.
Нет никакой разницы в использовании
out.print()
иout.write()
. Оба используются для записи версииString
данного объекта в буфер JspWriter.
Однако JspWriter.print()
способен принимать множество аргументов, чем Writer.write()
.
JspWriter.print()
Writer.write()
Метод write() записывает только символы в поток (или консоль), но не печатает, а метод print() записывает и печатает его в потоке (или консоли).
System.out.write(97);
System.out.print('j');
первый оператор пишет символ 97 i.e 'a' на консоли, но не печатает, а второй оператор печатает 'a', который уже написан в потоке и 'j', который передается методом print().
Еще одно отличие: out.write(-) метод просто записывает данные или объект в браузер, как файл. Вы не можете написать какое-либо утверждение, например out.write(10 * 20);, но мы делаем это с помощью out.print(10 * 20);