Hat java so etwas wie Pointer?
-
Hallo!
Ich komme aus der C++ Ecke und mich interessiert ob Java Pointer anbietet?
Ich meine gehört zu haben das Java eben dies nicht tut, deswegen frage ich mich wie man mit Java z.B. doppelt verkettete Listen realisiert?Und besitzt Java templates?
Gruß
Interessierter
-
Java besitzt natürlich Pointer, nur werden sie -- wahrscheinlich aus Marketinggründen -- Referenzen genannt. Es dürfte kaum ernstzunehmende imperative Sprachen geben, die keine Pointer haben. Was Java nicht hat, ist Pointerarithmetik. Du kannst also nicht einen Pointer nehmen, ihn inkrementieren, und damit über ein Array (oder eben auch über ein Array hinaus ) iterieren.
-
Und besitzt Java templates?
In java heissen sie Genrics und stehen mit dem JDK 5.0 zur Verfügung.
Ich komme aus der C++ Ecke und mich interessiert ob Java Pointer anbietet?
Also diese strengen Pointer die C++ hat, hat Java nicht. In Java gibt es dafür Referenzen (eigentlich eine Art Pointer, der garantiert nicht null ist).
Damit erübrigt sich die Frage nach Listen hoffentlichpublic class LList { private int value; private LList prev,next; //... }
-
Also diese strengen Pointer die C++ hat, hat Java nicht. In Java gibt es dafür Referenzen (eigentlich eine Art Pointer, der garantiert nicht null ist).
Ahja?! Das war doch eher in C++ so, dass Referenzen nicht null sein dürfen.
-
Präzisierung: Niemand sagt, dass C++-Referenzen nicht Null sein *dürfen*. Sie *können* nicht Null sein, weil dazu ein Nullpointer dereferenziert werden müsste, was bereits undefiniertes Verhalten auslöst.
-
Ich wollte es jetzt vermeiden, zu sagen, dass Referenzen in C++ garantiert nicht 0 sind.
(was natürlich bei einem gültigem C++ Programm wirklich nicht so ist, ok ich gebs ja zu)Zu den Java-Referenzen: Im Grunde entsprechen sie von der Verwendung her den C++ - Zeigern.
[flame]In Java gibt es sogar ein richtiges null für diese Referenzen[/flame]Intern sind sie meist als Zeiger auf Knoten realisiert, die selber wiederum einen Zeiger auf das tatsächliche Objekt haben. Man hat also in der Regel 2 Indirektionen beim Zugriff, in C++ nur eine.
-
Strictly speaking, in Java, a pointer is a reference that is guaranteed not to be null. However, when people use the term pointer, they usually mean C++ style direct hardware address pointers.
You may have heard some FUDster claiming that Java sucks roadkill because it has no pointers. How can you write serious code without pointers? In Java are you actually limited to FØRTRAN style problems: no linked lists, no queues etc? Java does not have raw pointers like C or C++. It has something almost as powerful, but many times safer called references (Java refers to them as pointers in one place, the NullPointerException). They are like pointers, except that the dangerous features are removed, namely: pointer arithmetic...
-
Strictly speaking, in Java, a pointer is a reference that is guaranteed not to be null.
Dieser Satz ist Müll. Mit "null" muss nicht die Adresse 0x00000000 gemeint sein, außerdem ist es der Implementierung nicht verboten, null tatsächlich über 0x00000000 darzustellen.
Was soll das jetzt bitte bedeuten, dass Java-Referenzen nie null sind.Object myRef = null;
fertig.