Einführung in Referenzen in der Programmiersprache Java im Rahmen der Lehre des Programmierens mit der Programmiersprache Java. [] (Referenzen in Java), Lektion, Seite 720244
https://www.purl.org/stefan_ram/pub/java_referenzen (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Java-Kurs

Referenzen in Java 

Eine Referenz ist ein Wert, der ein Objekt angibt  (das heißt, er kann verwendet werden, um ein Objekt zu erreichen). Man sagt, daß eine Referenz, die ein Objekt angibt, dieses Objekt referenziere. Wird eine Referenz und ein Objekt bildlich dargestellt, so wird die Referenz in der Regeln durch eine Linie mit dem von ihr referenzierten Objekt verbunden, welche eine Pfeilspitze hat, die zu dem Objekt zeigt.

In vielen Fällen steht die Referenz für das Objekt selber. Daher kann eine Referenz r beispielsweise nicht ausgegeben werden, denn in print( r ) wird das Objekt der Referenz r ausgegeben und nicht die Referenz r selber. Nur in einigen Fällen, wie bei der Zuweisung und der Parameterübergabe wird die Referenz selber kopiert und nicht das referenzierte Objekt.

Eine Referenz kann in einer Variablen enthalten sein, während Objekte nicht direkt in einer Variablen enthalten sein können. Wenn eine Variable eine Referenz auf eine Objekt enthält, so sagen wir, daß sie jenes Objekt referenziere.

Referenzen sind für die in der objektorientierten Programmierung zentrale Polymorphie nötig.

Referenzen erlauben es, sich auf ein Objekt zu beziehen. Ohne die Referenzen könnte man zwei Objekte, welche denselben Typ und Zustand haben nicht unterscheiden. Damit erlauben Referenzen es den in der objektorientierten Programmierung zentralen Objektgraph aufzubauen.

Referenzen benötigen meist weniger Speicherplatz als Objekte. Daher sparen sie Speicherplatz und beschleunigen die Verarbeitung.

Referenzen benötigen alle denselben Speicherplatz während Objekte unterschiedliche Speichergröße haben. Dadurch können Listen von Referenzen im Speicher effizienter gespeichert und schneller verarbeitet werden.

Wir haben bisher zur Vereinfachung oft von „Objekten“ gesprochen, wenn eigentlich die Bezeichnung „Referenz“ korrekt gewesen wäre.

Referenzausdrücke

Die folgenden Ausdrücke stehen nach dem bisher Gesagten für Objekte :

All diese Ausdrücke haben als Typ einen Referenztyp  und werden daher auch Referenzausdrücke  genannt.

Referenzen als Werte von Referenzausdrücken

Tatsächlich ist der genaue Wert eines Referenzausdrucks aber gar kein Objekt, sondern eine sogenannte Referenz .

Der Wert des Ausdrucks »"abc"« ist beispielsweise eine Referenz  und kein Objekt.

Dies erklärt endlich auch, warum man überhaupt von Referenz ausdrücken und Referenz typen spricht!

Referenzen als Stellvertreter von Objekten

Eine bestimmte Referenz  steht für ein bestimmtes Objekt. Dieses Objekt nennen wir das Objekt der Referenz, und umgekehrt nennen wir die Referenz die Referenz des Objektes.

Referenzen stehen für Objekte.

Eine Referenz und ihr Objekt
Referenz ----------------------> Objekt

Man sagt auch, daß die Referenz ihr Objekt referenziere  oder nennt sie eine Referenz auf  ihr Objekt.

Eine Referenz erlaubt es, ihr Objekt zu erreichen (sie zeigt, wo  ihr Objekt zu finden ist – daher kommt auch der Begriff „Zeiger“ für eine Referenz).

Dort wo ein Objekt erwartet wird, wird immer eine Referenz akzeptiert. Objekte selber lassen sich auch gar nicht direkter angeben als durch eine Referenz.

Der Wert eines Referenzausdrucks im Quelltext ist zunächst eine Referenz, die aber dann ihrerseits ein Objekt referenziert.

Beziehung zwischen Referenzausdrücken und Objekten
Quelltextmodell                          Laufzeitmodell

Referenzausdruck ----------------------> Referenz ----------------------> Objekt
Bindung Referenzierung

Der Wert des Ausdrucks »"abc"« ist beispielsweise eine Referenz  auf ein String-Objekt, das die Zeichenfolge »abc« darstellt.

Wir beschreiben im folgenden noch einige in dem obigen Diagramm verwendete Begriffe:

Das Quelltextmodell  ist die Beschreibung des Aufbaus  des Quelltextes einer Programmiersprache. „Referenzausdruck“ ist ein Begriff, der im Quelltextmodell vorkommt.

Das Laufzeitmodell  ist die Beschreibung des Geschehens bei der Ausführung  eines Programmes einer Programmiersprache. „Referenz“ und „Objekt“ sind Begriffe, die im Laufzeitmodell vorkommen.

Eine Bindung  ist die Zuordnung eines Teils des Laufzeitmodells zu einem Teil des Quelltextmodell, beispielsweise die Zuordnung einer bestimmten Referenz zu einem bestimmten Namen.

Automatische Dereferenzierung

Das Ersetzen einer Referenz durch ihr Objekt bezeichnet man auch als Dereferenzierung. Die Dereferenzierung hebt die Referenzierung, also die Darstellung eines Objektes durch seine Referenz, wieder auf.

Referenzen werden in der Regel automatisch dereferenziert, also durch ihr Objekt ersetzt. Daher bemerkt man in der Regel gar nicht, daß es Referenzen überhaupt gibt, und die Situation erscheint wie in dem folgenden vereinfachten Diagramm.

Vereinfachte Beziehung zwischen Referenzausdrücken und Objekten
Quelltextmodell                          Laufzeitmodell

Referenzausdruck ----------------------> Objekt
Bindung

Ausgabe von Referenzen

Referenzen lassen sich in Java nicht ausgeben, weil sie beim Versuch der Ausgabe ja immer durch ihr Objekt ersetzt werden, welches dann ausgegeben wird.

Daher gibt »java.lang.System.out.println( "abc" );« nicht  die Referenz »"abc"« aus, sondern das von ihr referenzierte Objekt.

Referenzen und Zeiger

Man hört manchmal, daß es in Java  keine Zeiger  gäbe. Dies ist jedoch falsch, denn die offizielle Sprachnorm JLS8  erklärt im Abschnitt 4.3.1 selber, daß Referenzen Zeiger (“pointers ”) sind. Wir können das Wort „Zeiger“ daher als einen Oberbegriff oder als ein Synonym für „Referenz“ verstehen.

JLS 8
4.3.1 Objects
An object is a class instance or an array.
The reference values (often just references) are pointers to these objects

Referenzen und Speicheradressen

Man kann sich unter einem Zeiger auch eine Speicheradresse vorstellen. Eine Referenz ist also die Speicheradresse eines Objektes.

Referenzen als Seriennummer eines Objekts

Früher wurde schon einmal gesagt, daß Objekte eine „versteckte Seriennummer“ enthalten. Dabei wurde an die Referenz eines Objektes gedacht, die man als eine solche versteckte Seriennummer ansehen kann.

Teilnehmerfragen *

Welchen Vorteil haben Referenzen? *

Es kommt natürlich darauf an, womit  man sie vergleicht!

Verglichen mit der Möglichkeit, Objekte direkt  in Variablen zu speichern, spart das Speichern von Referenzen Speicherplatz und beschleunigt das Kopieren bei der Zuweisung an Referenzvariablen und bei der Übergabe von Argumenten an Methoden, weil Objekte im Speicher oft größer sind als Referenzen.

Verglichen mit Programmiersprachen, in denen sowohl Objekte als auch Referenzen in Variablen gespeichert werden können, hat die ausschließliche  Verwendung von Referenzen den Vorteil, daß die Programmiersprache einfacher zu erlernen und anzuwenden ist, wenn immer  Referenzen verwendet werden, weil der Programmierer sonst immer in jedem einzelnen Fall  entscheiden, beziehungsweise ermitteln, muß, wann eine Referenz in einer Variablen gespeichert wird und wann ein Objekt.

Außerdem werden Referenzen benötigt, um sich auf ein bestimmtes Objekt zu beziehen. Wenn beispielsweise ein Wert in einem Objekt gespeichert werden soll, so muß irgendwie angegeben werden, in welchem  Objekt der Wert gespeichert werden soll. Ohne Referenzen könnten zwei verschiedene Objekte nicht immer ohne weiteres erreicht oder unterschieden werden (wie soll ein Objekt beispielsweise sich selbst referenzieren, wenn es keine Referenzen gibt?).

Schließlich setzt die objektorientierte Programmierung Referenzen voraus, da die für die objektorientierte Programmierung zentrale späte Bindung (Polymorphie) ohne Referenzen nur schwer werden kann. (Objekte haben unterschiedliche  Speichergröße, während alle Referenzen gleich groß  sind. Eine Variable für ein Objekt eines unbestimmten  Typs ist also nicht direkt möglich, da dann nicht bekannt wäre, welche Größe  diese Variable haben sollte.)

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram720244 stefan_ram:720244 Referenzen in Java Java Referenz erklärung; Java Referenzen Erklärung Java Referenz howto; Java was ist eine Referenz; erklärung Referenz in Java; was ist Referenz in Java; was bedeutet Referenz in Java erklärung; was Referenz in Java bedeutet; was ist eine Referenz in Java; was ist eine Referenz Java; was sind Referenzen in Java; Referenzen von Java; Java Referenzen erklärt; was heisst Referenz in verbindung mit Java? , source, source code,sourcecode, Programmier sprache java, Java Programm Java Programmiersprache Java Sprache Java Programmierung Programmieren in Java, Die Programmiersprache Java Javapgrammierung, Java-Programmierung, Java2, Java1.2, Java1.3, Java1.4, Java1.5, Java 2, Java 1.2, Java 1.3, Java 1.4, Java 1.5, Java 1.6, Java 1.7, Java 1.8, Java 8, Java 1.9, Java 9, Tiger, Dolphin, objektorientierte Programmierung, Java sun, , Softwareentwicklung, Software-Entwicklung, Software Entwicklung, Softwareprogrammierung, Software-Programmierung, Software Programmierung, Softwareherstellung, Software-Herstellung, Software Herstellung, Softwareerstellung, Software-Erstellung, Software Erstellung, Softwareengineering, Software-Engineering, Software Engineering, Softwareenginering, Software-Enginering, Software Enginering, Softwaremethodik, Software-Methodik, Software Methodik, Programmiermethodik, Programmier-Methodik, Programmier Methodik, Softwaredidaktik, Software-Didaktik, Software Didaktik, Methodik des Programmierens, Didaktik des Programmierens, Fachdidaktik des Programmierens, Fach-Didaktik des Programmierens, Programmieren, Programmierung, Computer Science, Informatik, Informatik, Informationspädagogik, Informationspaedagogik, Programmierer, programmieren, Quellcode, Quelltext, Quelle, Quellen, Informatiker, Fachinformatiker, Entwickler, mit Stil, mit Stiel, mit Still, , Einführung, Einfuehrung, Einführungen, Einfuehrungen, eLearning-Modul, e-Learning-Modul, eLearning-Module, e-Learning-Module, Kurs Berlin, Kurse Berlin, Kursus, Vortrag, Vorträge, Vortraege, Lehrgang, Lehrgänge, Lehrgaenge, kostenloses Lehrmaterial, kostenlose Lehrmaterialien, Vorlesung, Vorlesungen, Unterrichtseinheit, Unterrichtseinheiten, kostenloses Unterrichtsmaterial im Internet, kostenlose Unterrichtsmaterialien im Internet, Ausbildung, Ausbildungen, für die Ausbildung, Fortbildung, Fortbildungen, Weiterbildung, Weiterbildungen, Schulung Berlin, Schulungen Berlin, Internetschulung, Webschulung, Kursunterlage, Kursunterlagen, trainer Berlin, Didaktik, Informatikunterricht, Primer, Skript FH, Skripte FH, Skriptum FH, Skripts FH, Script FH, Scripte FH, Scriptum FH, Scripts FH, howto, how-to, how to, Lehrbuch, Buch, Bücher, Buecher, Bericht, Crash Kurs Berlin, Crash-Kurs Berlin, Crashkurs Berlin, Report, Sachtext, Sachtexte, Übung, Übungen, Uebung, Uebungen, course, PbclevtugFgrsnaEnz, lecture note, lecture notes, Tutorial, Tutor, Tutorium, Teacher, Lehrer Berlin, Trainer Berlin, Beratung Berlin, Anleitung zum, Anleitungen zum, Einführung, Einfuehrung, Einführungen, Einfuehrungen, Handbuch für, Handbücher, Handbuecher, Support, Diplomarbeit, Facharbeit, Hausarbeit, Hausarbeiten, Werk, Werke, Text, Übungsblatt, Uebungsblatt, Lösung, Loesung, Lösungen, Loesungen, Auflösung, Aufloesung, Auflösungen, Aufloesungen, Facharbeit, Facharbeiten, Forum, Training, manual, Folie, Folien, Lehrmittel, beratung, Definition von, Allgemeine Erklärung, Allgemeine Erklaerung, Allgemeine Erklärungen, Allgemeine Erklaerung, Allgemeine Erklaerungen, Einfache Erklärung einfach, Einfache Erklaerung einfach, Einfache Erklärungen, Einfache Erklaerung, Einfache Erklaerungen, zum Thema, FAQ, FAQs, Konzept, Lernkurs, Lern-Kurs, Lernkurse, Lern-Kurse, eine kurze Erklärung, Begriff, Begriffe, Erklärung zu Begriffen, begriffbestimmung, begriffbestimmung, Begriffsbestimmung, Begriffserklärung, Begriffserklaerung, Wort, Worterklärung, Worterklaerung, Definition, Beispiel, Beispiele, Bedeutung, Bedeutungen, was bedeutet, Begriffsdefinition, für Anfänger, fuer Anfaenger, für Einsteiger, für Beginner, zum selber Lernen, handout, hand out, web based training, WBT, Net Based Training, NBT, computer based training, CBT, virtual learning environment, virtual university, für die Schule, Seminar, Seminare, Vorgehensweise, Pädagogik, Paedagogik, Akademie, Onlineacademie, Onlineakademie, Wissen, Unterrichtsvorbereitung für das Fach, Unterricht, für Lehrer, für Lehrerinnen, Referat, Referate, Hausaufgabe, Hausaufgaben, Tip, Tipp. Tipps und Tricks, Tips und Tricks, Methode, Methoden, Methodik, Funktion, Funktionsweise, Aufbau, Prinzip, Grundlage, Grundlagen, Internetschulung, Unterlage, Unterlagen, Struktur, Frage, Fragen, Antwort, Antworten, Schulunterricht, zum erlernen, was ist das?, wie?, lerne, Onlineausbildung, Onlinelehrgang, Onlinekurs, Onlinebuch, Webbuch, Academy, Fachhochschule, FH, TFH, Hochschule, Universität, Universitaet, Uni, Schule, Berufsschule, Gymnasium, Erste Schritte mit, Dozent, Dozenten, Zusammenfassung, Übersicht, Term, Fachwort, Fachbegriff, Fachbegriffe, Grundbegriff, Grundbegriffe, Lektion, Lektionen, Bedienungsanleitung, Bedienungsanleitungen, Spezialist, Spezialisten, Coaching, Coach, Fachbuch, technologie, Unterschied zwischen, Unterschiede zwischen, lehren, unterrichten, für das Studium, für Studenten, für Studentinnen, für Studierende, für Schüler, für Schülerinnen, Wie kann ich, Wie kann man, Hilfe, selber, erstellen, Erstellung, Beginner, Online-Seminar, Online-Kurs, Online-Schulung, ich, gebrauchsanweisung, gebrauchsanleitung, Bedienungsanweisung, Einweisung, Kurzinfo, Internet-Kurs, Internet-Kurse, Online-Training, Intensiv, Intensivkurs, Vortragsreihe, Präsentation, Grundzüge, Mitschrift, Mitschriften, Verständnis, verstehen, anwenden, Hintergrundwissen, Hintergrund, Hintergründe, content, Funktionsprinzip, Schritt für Schritt; E-Learning; elearning; online learning; Fernlehre, Fernlehrgang, Fernlehrgänge, Referent, Referenten, Fernkurs, Fernkurse, Fernstudium, Fernschule, Fernuniversität, Fernlehrer, Denken, Qualifizierungsmaßnahme, Qualifizierung, Qualifizierungen, Volkshochschulkurs, Volkshochschulkurse, Internet-Learning-Plattform, Online-Learning-Plattform, E-Learning-Plattform, Internetlearning-Plattform, Onlinelearning-Plattform, Elearning-Plattform, jetzt, Kochbuch, einfach erklärt, Kenntnis, Kenntniss, Kenntnisse, deutsche Hilfe, lernen und verstehen; blended learning; courseware, Profi, Profis, professionell, professionelle, professionelles, profesionell, profesionelle, profesionelles, professionel, gekonnt, für Könner, Grundkurs, Leistungskurs, Aufbaukurs, Lehrtext, Lehrtexte, Fachtext, Fachtexte, Ausarbeitung, distance learning, Online Seminar, distance education, Online Tutorium, Online Tutorien, technology-based learning, Computer based learning, CBL, Internet Based learning, IBL, Web based learning, WBL, online-learning, OL, online-training, OT, CAI, Computer Assisted Instruction, CUU, Computerunterstützter Unterricht, Computer-unterstützter Unterricht, Know how, Grundkenntnis, Grundkenntnisse, Kompetenz, Schulungsunterlagen, Insiderwissen, Rat, Lehrerinnen und Lehrer, ABC, Überblick, Arbeitsblatt, Sekundarstufe, Oberstufe, Material, Materialien, Unterrichtsentwurf, Unterrichtsentwürfe, Lerntip, Lerntips, Lerntipp, Lerntipps, ebook, schnell lernen, Lerner, Lernender, Lernende Erwachsenenbildung, Frage und Antwort, Selbststudium, Selbstudium, Umschulung, , kostenlos, kostenlose, kostenloses, kosten los, kosten lose, kosten loses, gratis, free, frei, freie, freies, privat, private, privates, homepage, home-page, home page, website, web site, webpage, web-page, web page, webpages, web-pages, web pages, webseite, Web-Seite, Webseite, Webseiten, Web-Artikel, Web Artikel, online, on-line, on line, download downloaden, down load, or, deutsch, deutsche, deutsches, deutscher, Deutschland, deutschsprachig, deutschsprachige, deutschsprachiges, german, germany, and, uebersicht, Uerbersicht, uebersichten, Uebersichten, Übersicht, übersicht, Übersichten, übersichten, Uebersicht, uebersicht, Uebersichten, uebersichten, Info, Infos zu, Information über, ueber, Informationen über, Auskunft, Auskünfte, Auskuenfte, Dienst, PbclevtugFgrsnaEnz, Angebot, Angebote, Anbieter, server, für, fuer, in, an, keyword, keywords, key word, keywords, internet, internets, net, network, net work, networks, net works, web, www, world wide web, Theorie, Praxis, Anwendung, DV, IT, glossar, fachwörterbuch it-glossar, computer lexikon, Computerlexikon, Computer-Lexikon, Lexikon, computer lexicon, Computerlexicon, Computer-Lexicon, Lexicon, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 was ist ein, was ist das, was sind, definiere, definition, define, Inhalt, html, xhtml, free im netz, PDF Text, digital, digitale, binär, binäre, elektronisch, elektronische, fachbegriff, fachbegriffe, konzept, Begriff, allgemein, allgemeine, allgemeines, Technik, Datentechnik, Digitaltechnik, Binätechnik, online lesen; , Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd720244, slrprddef720244, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/java_referenzen