#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. Спасибо, сэр. Но там, в системном классе, это, возможно, переменная. Пожалуйста, проверьте это. Хорошего дня!