Einführung in die Referenzen einer Klasse in Java im Rahmen der Lehre des Programmierens mit der Programmiersprache Java. [] (null Referenz Java Referenzen Java), Lektion, Seite 721517
https://www.purl.org/stefan_ram/pub/java_referenzen_de (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram

Referenzen in Java

Eine Klasse kann Typ eines Ausdrucks sein.

Die mit Schlüsselwörtern benannten Datentypen, wie der Typ "int", der Typ "double" oder der Typ "boolean", werden zur Unterscheidung von den Klassen als Typen auch primitive Typen  genannt. Wenn eine Klasse als Typ verwendet wird, so nennt man sie auch einen Referenztyp.

Primitive Typen und Referenztypen sind nicht zuweisungsverträglich. Ein Wert eines primitiven Typs kann also nicht an einer Stelle verwendet werden, an der ein Wert eines Referenztyps erwartet wird und umgekehrt.

Ein Wert eines Ausdrucks, dessen Typ eine Klasse ist, ist eine Referenz auf ein Objekt dieser Klasse. Eine Referenz  auf ein Objekt ist ein Wert, der von Java  verwendet werden kann, um das Objekt zu erreichen.

Man sagt auch, daß eine Referenz ihr Objekt referenziere, um auszudrücken, daß sie es erlaubt, ein bestimmtes Objekt zu erreichen.

In der Abbildung stellt das Doppelkreuz "#" eine Referenz dar, der Kreis steht für ein Objekt und der Pfeil verbindet die Referenz mit dem von ihr referenzierten Objekt.

Eine Referenz bezieht sich auf ein Objekt
                    _____ 
.-' '-. 
.' '. 
/ \  
; ; 
# -------->| Objekt | 
; ; 
\ / 
'. .' 
'-._____.-'

In Java  gehören zu einer Referenz, die als Wert eines Ausdrucks ermittelt wurde, stets zwei Typen : Der Typ dieses Ausdrucks  und der Typ des referenzierten Objekts. In viele Fällen sind diese beiden Typen gleich.

Der Ausdruck "System.out" hat beispielsweise den Typ "java.io.PrintStream" und das von der Referenz "System.out" referenzierte Objekt hat ebenfalls den Typ "java.io.PrintStream".

Der Typ eines Ausdrucks und des von seinem Wert referenzierten Objektes
                Ausdruck                                Objekt 
_____ 
.-' '-. 
.' '. 
/ \  
; Von System.out ; 
System.out ---------------------->| referenziertes | 
; Objekt ; 
\ / 
'. .' 
'-._____.-'
Typ: java.io.PrintStream java.io.PrintStream

Die Nullreferenz

Es gibt allerdings Referenzen, die keine Objekte referenzieren. Jeder Referenztyp enthält genau eine Nullreferenz, die kein  Objekt referenziert.

Um eine solche Nullreferenz zu schreiben, kann das Nulliteral  verwendet werden, dessen Wert eine Nullreferenz des namenlosen Nulltyps  ist. Dieser Wert kann in jeden Referenztyp gewandelt werden, um die Nullreferenz des Referenztyps zu erhalten. So ist beispielsweise "( java.io.PrintStream )null" die Nullreferenz des Typs "java.io.PrintStream". Im Programm "NullComp.java" wird die Referenz "System.out" mit der Nullreferenz "( java.io.PrintStream )null" verglichen.

NullComp.java
public class NullComp 
{ final public static void main( String[] args ) 
{ System.out.println( System.out ==( java.io.PrintStream )null ); }}

System.out
false

Da die Referenz "System.out" ein Objekt referenziert, ist sie nicht die Nullreferenz des Typs "java.io.PrintStream".

Bei der Verwendung eines Eintrags wird geprüft, ob der Eintrag auch vorhanden ist. Dabei geschehen zwei Prüfungen: Zuerst wird vom Übersetzer geprüft, ob der Eintrag ein Eintrag des Typs des vor dem Trennzeichen "." stehenden Ausdrucks ist. Dann wird zur Laufzeit geprüft, ob ein solcher Eintrag eines referenzierten Objektes erreicht werden kann.

Daher meldet der Übersetzer bei dem folgenden Programm einen Fehler. Er kann nicht nachvollziehen, daß der Bezeichner "printer" ein Eintrag der Klasse "java.io.PrintStream" ist. (Er kann das „Symbol“ nicht „auflösen“ und schreibt deshalb "cannot resolve symbol")

Printer.java
public class Printer 
{ final public static void main( String[] args ) 
{ ( System.out ).printer(); }}

Konsole
javac Printer.java
Printer.java:4: cannot resolve symbol 
symbol : method printer () 
location: class java.io.PrintStream 
{ ( System.out ).printer(); }} 

1 error

Einträge eines Typs sind keine Einträge der Nullreferenz des Typs, wie das Programmbeispiel "Null.java" zeigt.

Null.java
public class Null 
{ final public static void main( String[] args ) 
{ (( java.io.PrintStream ) null ).println(); }}

Konsole
javac Null.java 
java Null

Exception in thread "main" java.lang.NullPointerException 
at Null.main(Null.java:4)

Der Fehler wird aber hier während der Laufzeit erkannt und nicht schon während der Übersetzung. Denn der Übersetzer konnte ja erkennen, daß der Bezeichner "println" ein Eintrag des Typs "java.io.PrintStream" ist. Der Wert der Ausdruck "(( java.io.PrintStream ) null )" wird aber dann erst zur Laufzeit verwendet, um das Objekt zu ermitteln, das Empfänger der Nachricht "println()" sein soll. Durch die Nullreferenz wird aber solch ein Objekt nicht bestimmt, so daß es dann zu einer Fehlersituation kommt.

Die Fehlermeldung "java.lang.NullPointerException" verwendet den Begriff „null pointer “, was soviel bedeutet, wie die Nulladresse  (ein Nullzeiger ). Das illustriert auch noch einmal, daß Referenzen eigentlich Adressen sind, wie am Anfang dieser Lektion erklärt.

Referenzen als Objekte in Java

Eine Referenz auf ein Objekt ist nicht das gleiche, wie das von dieser Referenz referenzierte Objekt. Eine Referenz steht in Java  allerdings für das von ihr referenzierte Objekt.

Oft kann man so tun, als ob die Referenzen die Objekte selber seien.

Eine Unterscheidung zwischen einer Referenz auf ein Objekt und einem Objekt ist nicht immer nötig. Es gibt ja in Java  auch keinen speziellen Typ für eine Referenz auf ein Objekt, so daß man auch nicht durch eine Typangabe beispielsweise zwischen „Objekt-Referenz“ und „Objekt“ unterscheiden kann.

Dementsprechend unterscheiden auch Texte über Java  zu Recht dort nicht  deutlich zwischen einer Referenz und einem Objekt, wo dieser Unterschied gar keine Bedeutung hat.

Wenn also von dem Objekt  "System.out" gesprochen wird, dann ist damit—genau gesagt—das von der Referenz  "System.out" referenzierte Objekt gemeint. Wenn vom Typ  "java.io.PrintStream" gesprochen wird, dann ist der Typ gemeint, dessen Werte eigentlich „Referenzen auf  "java.io.PrintStream"-Exemplare “ (und nicht sind "java.io.PrintStream"-Exemplare selber) sind.

Aufgrund der stillschweigenden Interpretation (Dereferenzierung) der Referenzen als Objekte und aufgrund des Fehlens eines ausdrücklichen Referenzdatentyps ist es in Java  oft nicht nötig, sich der Referenzen bewußt zu sein und man kann teilweise so tun, also ob man mit Objekten umgeht und nicht mit Referenzen.

In einigen Fällen muß man aber doch auf den Unterschied zwischen Referenzen und Objekten achten, sonst könnte auf die Erwähnung von Referenzen tatsächlich ganz verzichtet werden. In solchen Fällen wird dann besonders auf die Notwendigkeit der Unterscheidung hingewiesen.

Übungsfragen

/    null
Was passiert, wenn versucht wird, den folgenden Ausdruck auswerten zu lassen?
Wie könnte man das erklären?
java.lang.System.out.println( null )

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 stefanram721517 stefan_ram:721517 null Referenz Java Referenzen 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, 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 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, slrprd721517, slrprddef721517, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten.
https://www.purl.org/stefan_ram/pub/java_referenzen_de