Java wurde so entworfen, dass es simpel und trotzdem einigermaßen mächtig sein sollte. Daher wurden Zeiger anders implementiert, nämlich als Referenzen. Diese Referenzen können nicht verändert werden, um zu verhindern, dass sie auf fehlerhafte oder geschützte Speicherbereiche verweisen und das Programm damit zum Absturz bringen.
Der häufigste Fehler bei Pointern dürfte nämlich der sein, dass man mit dem Freimachen, verschieben und löschen von Speicherstellen und Pointer auf diese einen Fehler einbaut, der zumeist zum Absturz führt. Und diese Fehler sind dann nicht immer leicht zu finden, weil es in der Regel Laufzeitfehler sind, die manchmal nicht reproduzierbar sind, weil sie nur zu ganz bestimmten Konstellationen auftreten (z.B. wenn Speicherbereich X gerade mit Wert Y belegt ist und Programm Z darauf zugreift, das eigene Programm diesen Bereich aber anders belegen will)
Um solche Fehler zu vermeiden gibt es keine echten Pointer in Java sondern nur die Referenzen, die weniger mächtig sind, aber nach einem ähnlichen Prinzip arbeiten.
In Java wirst du es öffters antreffen, dass gewisse Dinge nicht machbar sind. Beispielsweise per Applet Dateien auf dem Client-System verändern geht nicht. Das hat auch wieder Sicherheitsgründe, damit Java nicht zur Programmierung von schädlicher Software eingesetzt wird, die dir beim laden einer Website plötzlich die Platte formatiert oder sonstige Sachen anrichtet. Andere Formate wie ActiveX haben die Möglichkeit, Daten zu ändern. Dies stellt ein erhebliches Risiko dar, dafür ist es in diesem Punkt aber auch mächtiger in den Möglichkeiten als eben Java. Nach dem gleichen Prinzip werden dir noch ein paar Dinge unterkommen, die Java aus Sicherheitsgründen nicht unterstützt.
Eine LinkedList ist doch auch in Java kein Thema - eine Referenz übernimmt den Verweis auf das vorherige bzw nächste Element der Liste und schon hast du die Möglichkeit die Liste zu durchlaufen und dynamisch hinzuzufügen. Dafür braucht man keine Pointer.Zitat