powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос по InputStream
24 сообщений из 24, страница 1 из 1
Вопрос по InputStream
    #34678115
Primax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот в документации написано , что InputStream - абстрактный класс. А как тогда я могу пользоваться переменной System.in, которая имеет тип InputStream ?


PS не судите строго...я только учу Яву )
...
Рейтинг: 0 / 0
Вопрос по InputStream
    #34678130
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а в чем проблема?
вы не можете создать экземпляр абстрактного класса, но вы можете
создать экземпляр класса, расширяющего его, привести к типу
абстрактного класса и работать с ним, что на примере InputStream и
происходит. если посмотреть дебаггером, то там будет какой-нить другой
класс, а не InputStream
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Вопрос по InputStream
    #34678160
Primax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deady
но вы можете
создать экземпляр класса, расширяющего его, привести к типу
абстрактного класса и работать с ним, что на примере InputStream и
происходит.
..и экземпляр после привидения к InputStream будет работать с методами InputStream, да ?

И еще, как в eclipse посмотреть переменную в дебагере ? А то я что-то не пойму как...в окно Variables нельзя добавить переменные ((
...
Рейтинг: 0 / 0
Вопрос по InputStream
    #34678169
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>
> ..и экземпляр после привидения к InputStream будет работать с
> методами InputStream, да ?
>


он и без приведения будет с ними работать. он же его расширяет, что
значит - наследует все, что определено в InputStream
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Вопрос по InputStream
    #34678196
Primax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. System.in - это просто ссылка типа InputStream, а реально она указывает на какой-то подкласс класса InputStream ?
...
Рейтинг: 0 / 0
Вопрос по InputStream
    #34678207
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На Mon, 23 Jul 07 15:11:00 GMT
"Primax" <nospam@sql.ru>; записано:

> Автор: Primax
> Т.е. System.in - это просто ссылка типа InputStream, а реально она
> указывает на какой-то подкласс класса InputStream ? Тема Ответить
> Сообщение
>


в яве нет ссылок. но мыслите в правильном направлении
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Вопрос по InputStream
    #34678262
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deady
в яве нет ссылок. но мыслите в правильном направлении
Posted via ActualForum NNTP Server 1.4
А как правильно называется то, что есть в Java? По сути переменные хранят ссылки на объекты.
...
Рейтинг: 0 / 0
Вопрос по InputStream
    #34678287
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>
> А как правильно называется то, что есть в Java? По сути переменные
> хранят ссылки на объекты. Тема Ответить Сообщение
>

по сути может и хранят, но лучше думать что их нет, иначе получатся
флеймообразные темы про immutable объекты и пр.. была одна такая год
назад
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Вопрос по InputStream
    #34678630
Primax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deady
в яве нет ссылок. но мыслите в правильном направлении
Posted via ActualForum NNTP Server 1.4
а как тогда они называются ? Например :

Object ob;

что такое ob ?
...
Рейтинг: 0 / 0
Вопрос по InputStream
    #34678742
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обратимся к источнику

Prentice Hall - Core Java 2 Volume I - Fundamentals 7th.chm
There is an important difference between objects and object variables. For example, the statement

Date deadline; // deadline doesn't refer to any object

defines an object variable, deadline, that can refer to objects of type Date. It is important to realize that the variable deadline is not an object and, in fact, does not yet even refer to an object. You cannot use any Date methods on this variable at this time. The statement

s = deadline.toString(); // not yet

would cause a compile-time error.

You must first initialize the deadline variable. You have two choices. Of course, you can initialize the variable with a newly constructed object:

deadline = new Date();

Or you can set the variable to refer to an existing object:

deadline = birthday;

Now both variables refer to the same object.


It is important to realize that an object variable doesn't actually contain an object. It only refers to an object.

In Java, the value of any object variable is a reference to an object that is stored elsewhere. The return value of the new operator is also a reference. A statement such as

Date deadline = new Date();

has two parts. The expression new Date() makes an object of type Date, and its value is a reference to that newly created object. That reference is then stored in the deadline variable.

You can explicitly set an object variable to null to indicate that it currently refers to no object.

deadline = null;
. . .
if (deadline != null)
System.out.println(deadline);

If you apply a method to a variable that holds null, then a runtime error occurs.

birthday = null;
String s = birthday.toString(); // runtime error!

Variables are not automatically initialized to null. You must initialize them, either by calling new or by setting them to null.



//

Many people mistakenly believe that Java object variables behave like C++ references. But in C++ there are no null references, and references cannot be assigned. You should think of Java object variables as analogous to object pointers in C++. For example,

Date birthday; // Java



is really the same as

Date* birthday; // C++



Once you make this association, everything falls into place. Of course, a Date* pointer isn't initialized until you initialize it with a call to new. The syntax is almost the same in C++ and Java.

Date* birthday = new Date(); // C++



If you copy one variable to another, then both variables refer to the same date—they are pointers to the same object. The equivalent of the Java null reference is the C++ NULL pointer.

All Java objects live on the heap. When an object contains another object variable, that variable still contains just a pointer to yet another heap object.

In C++, pointers make you nervous because they are so error prone. It is easy to create bad pointers or to mess up memory management. In Java, these problems simply go away. If you use an uninitialized pointer, the runtime system will reliably generate a runtime error instead of producing random results. You don't worry about memory management, because the garbage collector takes care of it.

C++ makes quite an effort, with its support for copy constructors and assignment operators, to allow the implementation of objects that copy themselves automatically. For example, a copy of a linked list is a new linked list with the same contents but with an independent set of links. This makes it possible to design classes with the same copy behavior as the built-in types. In Java, you must use the clone method to get a complete copy of an object.
...
Рейтинг: 0 / 0
Вопрос по InputStream
    #34678748
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Primax
а как тогда они называются ? Например :

Object ob;

что такое ob ?
Это неинициализированная объектная переменная.
После
Код: plaintext
1.
ob =  new  StringBuffer();
ob станет указателем на объект.

Неиспорченным C++'ом можно называть их ссылками (потому что они всё-равно не знают, что такое ссылка). Но лучше не надо.
...
Рейтинг: 0 / 0
Вопрос по InputStream
    #34678750
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Primax
PS не судите строго...я только учу Яву )
Кстати, почему бы вам не почитать указанный мной источник? И только потом задавать свои вопросы?
...
Рейтинг: 0 / 0
Вопрос по InputStream
    #34679016
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>
> а как тогда они называются ? Например :
>
> Object ob;
>
> что такое ob ?


ob - это не более чем инструкция компилятору как компилировать. за яву
точно не скажу, но например в перле ob - это элемент структуры,
описывающей переменные с именем ob (в перле можно сделать несколько ob
разных типов), содержащей ко всему тип этой ob.

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

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Вопрос по InputStream
    #34679067
joybell0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хрюхрюшкин.
Кстати, почему бы вам не почитать указанный мной источник? И только потом задавать свои вопросы?
А сам-то прочитал? ;)
А то вот судя по этому
Хрюхрюшкин.ob станет указателем на объект. и не скажешь.
Смотрим, черным по белому написано:

In Java, the value of any object variable is a reference to an object that is stored elsewhere.

И ни слова про указатели. Верней, нет. Слова-то есть, но сказаны они в адрес C++, чтобы облегчить понимание Jav'ы для тех, кто уже знает плюсы.
Поэтому, оперировать термином "ссылка" можно и нужно.
...
Рейтинг: 0 / 0
Вопрос по InputStream
    #34679134
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точно. Ссылка, но не указатель.
...
Рейтинг: 0 / 0
Вопрос по InputStream
    #34679186
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
joybell0
А сам-то прочитал? ;)

Ну вашу мать. Специально привел, чтобы вы дочитали до конца.
автор

Many people mistakenly believe that Java object variables behave like C++ references. But in C++ there are no null references, and references cannot be assigned. You should think of Java object variables as analogous to object pointers in C++ .

Это и есть указатели на объект.
...
Рейтинг: 0 / 0
Вопрос по InputStream
    #34679187
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже, вы не испорчены C++, юные падаваны :)
...
Рейтинг: 0 / 0
Вопрос по InputStream
    #34679195
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если вы хотите двинуться в дебри этимологии, велкам.
Давайте обсудим, что можно считать ссылкой, а что — указателем.
...
Рейтинг: 0 / 0
Вопрос по InputStream
    #34679584
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хрюхрюшкин.Обратимся к источнику

Лучше к http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html] перво источнику . Там где то есть упоминание "object variable"?
...
Рейтинг: 0 / 0
Вопрос по InputStream
    #34679662
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Timm
Лучше к http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html] перво источнику . Там где то есть упоминание "object variable"?
А меня тут не обвиняли в жонглировании "object variable".
Кстати, тынц
The reference values (often just references) are pointers to these objects, and a special null reference, which refers to no object.
...
Рейтинг: 0 / 0
Вопрос по InputStream
    #34679912
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хрюхрюшкин.
Кстати, тынц
The reference values (often just references) are pointers to these objects, and a special null reference, which refers to no object.

"Object reference" скрывает разделение между "reference variable" и "reference value".
PS. отличная статья в тему. поржать :)
...
Рейтинг: 0 / 0
Вопрос по InputStream
    #34679934
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Timm
"Object reference" скрывает разделение между "reference variable" и "reference value".
PS. отличная статья в тему. поржать :)
В Java есть лишь reference variable. Потому что reference value в ней нет по определению. Если не считать reference value как object pointer. Или я неправ?
...
Рейтинг: 0 / 0
Вопрос по InputStream
    #34679941
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Timm
PS. отличная статья в тему. поржать :)
Фу. Там про дур.
...
Рейтинг: 0 / 0
Вопрос по InputStream
    #34679980
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хрюхрюшкин. Timm
"Object reference" скрывает разделение между "reference variable" и "reference value".
PS. отличная статья в тему. поржать :)
В Java есть лишь reference variable. Потому что reference value в ней нет по определению. Если не считать reference value как object pointer. Или я неправ?
Так и есть. Спека эти понятия различает, книга - нет.
There are two kinds of types in the Java programming language: primitive types (§4.2) and reference types (§4.3). There are, correspondingly, two kinds of data values that can be stored in variables, passed as arguments, returned by methods, and operated on: primitive values (§4.2) and reference values (§4.3).
The reference values (often just references) are pointers to these objects, and a special null reference, which refers to no object.
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос по InputStream
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]