Выходной поток в java

#java #io

#java #io

Вопрос:

Пожалуйста, объясните переменную out в System.out

out иногда называют объектом типа OutputStream, иногда называемым объектом типа PrintStream

и даже когда это предопределенная переменная, иногда она присваивается объекту PrintWriter

 PrintWriter out= response.getWriter();
  

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

Ответ №1:

Ссылочная переменная суперкласса может содержать ссылку на объект подкласса. OutputStream — это абстрактный суперкласс всех классов OutputStream of bytes, поэтому вы можете указать System.out поле как тип OutputStream.

Комментарии:

1. Спасибо, сэр. Хорошего дня!

Ответ №2:

PrintStream является подклассом OutputStream, а System.out — это PrintStream, так что это действительно и то, и другое.

Строка:

 PrintWriter out= response.getWriter();
  

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

Комментарии:

1. PrintWriter Строка, вероятно, из сервлета, позволяющего записывать непосредственно в ответ, и да, совершенно отдельная вещь System.out .

2. response вероятно, является javax.servlet.ServletResponse

3. Пожалуйста, простите меня за мою небрежность, уважаемые программисты. PrintWriter out = response.getWriter взят из кода сервлета. Поскольку System.out обычно используется в программах, я подумал, что «out» должно быть зарезервированным словом и, следовательно, его не следует использовать каким-либо другим способом.

4. Большое вам огромное спасибо, сэр Эд, сэр Дэйв и сэр Стивен! Хорошего дня. Спасибо!

Ответ №3:

Насколько мне известно, в System.out «out» — это имя метода. Когда вы говорите System.out.print(), вы вызываете системный класс и его метод out() . Этот out() является статическим методом, который дает вам ссылку на объект класса «System». Итак, после получения ссылки вы вызываете метод print() .

Но in, PrintWriter out= response.getWriter(); вы просто создаете ссылочную переменную класса PrintWriter . Итак, как упоминают мои коллеги, нет никакой связи между «System.out» и «PrintWriter out». Для этих двух целей есть две цели.

Поправьте меня, если я ошибаюсь. Спасибо.

Комментарии:

1. Спасибо, сэр. Но там, в системном классе, это, возможно, переменная. Пожалуйста, проверьте это. Хорошего дня!