Objektnamen in Java (Objektnamen in Java), Lektion, Seite 724187
https://www.purl.org/stefan_ram/pub/objektnamen_java (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Java-Kurs

Objektvariablen in Java 

In einem Java -Quelltext werden Objektausdrücke (Ausdrücke, deren Typ ein Referenztyp ist) verwendet, um Objekte anzugeben.

Im Grundkurs hatten wir gelernt, daß in Deklarationen von Variablen die Typen »int«, »double«, »boolean« und »java.lang.String« erlaubt sind. Nun können wir dies dahingehend ergänzen, daß an Stelle der eben genannten Typen auch alle anderen Referenztypen, wie beispielsweise »java.io.PrintStream«, zulässig sind.

In der Deklarationsanweisung »final java.io.PrintStream out  = java.lang.System.out;« wird der lokale Name »out« vom Typ »java.io.PrintStream« für den Wert »java.lang.System.out« vereinbart.

Deklarationsanweisung
final java.io.PrintStream out  = java.lang.System.out;

Nun kann der Name »out« dann anstelle des Ausdrucks »java.lang.System.out« verwendet werden kann.

Anweisung mit Verwendung von »out«
out.println( 2 );

Eine Objektname wird also ganz ähnlich deklariert wie ein Name für einen elementaren Wert, nur daß anstelle eines elementaren Typs, wie »int«, nun ein Referenztyp, wie der Typ »java.io.PrintStream«, verwendet wird.

Main.java

public final class Main
{ public static void main( final java.lang.String[] args )
{

final int n = 2; /* 2 ist ein elementarer Wert */
final java.lang.String text = "abc"; /* "abc" ist ein Objekt */
final java.io.PrintStream out = java.lang.System.out; /* java.lang.System.out ist ein Objekt */

out.println( n );
out.println( text ); }}

transcript
2
abc

Betrachtet man ein Objekt isoliert, so hat es keinen Namen (Objekte sind „anonym“.). Es ist aber möglich, im Quelltext Variablen festzulegen, die ein Objekt enthalten, und dem Objekt auf diese Weisen einen Namen oder mehrere Namen zu geben.

Objekte haben keinen ihnen innewohnenden Namen, können aber in benannten Variablen enthalten sein.

»var«

Das obenstehende Programm kann auch mit »var« geschrieben werden. Die Variablen erhalten dadurch jeweils den Typ des Initialisierungsausdrucks, also jeweils dieselben Typen  wie im weiter oben stehenden Programm.

Main.java

public final class Main
{ public static void main( final java.lang.String[] args )
{

final var n = 2;
final var t = "abc";
final var o = java.lang.System.out;

o.println( n );
o.println( t ); }}

Protokoll
2
abc

In der Praxis kann »var« ruhig immer verwendet werden, falls der Typ des Initialisierungsausdrucks auch als Typ der Variablen verwendet werden soll. In diesem Kurs wird der Typ häufig auch weiterhin explizit angegeben, um diesen für den Leser zu verdeutlichen.

Einführung von Variablen für Ausdrücke

Das folgende Beispiel zeigt wie eine Variable für einen Ausdruck eingeführt wird. Dabei wird der Ausdruck

Vor der Einführung einer Variablen (Aufgabe)
java.lang.System.out.println( 2 );
Nach der Einführung einer Variablen (Lösung)
final int i = 2;
java.lang.System.out.println( i );

Beachten Sie, wie der Programmierer oben den richtigen Typ  – nämlich »int« – für die neue Variable festgelegt hat. Auch bei den folgenden Aufgaben ist es wichtig, jeweils den richtigen Typ  festzulegen. Im allgemeinen sollte dies der Typ des durch die Variablen ersetzten Ausdrucks sein.

Obwohl nichts dagegen spricht, in der Praxis »var« zu verwenden, soll bei der Bearbeitung dieser Aufgaben zu Übungszwecken auf »var« verzichtet werden.

/   Einführung von Variablen

Führen Sie eine Variable für den Ausdruck »1.2« ein, die innerhalb des gegebenen Blocks deklariert wird. Das heißt, daß hinterher an der bisherigen Stelle des Ausdrucks »1.2« nur noch ein Variablenname stehen soll.

Es soll sich hierbei um einen Refaktor  handeln, das heißt, daß der Block hinterher wieder dasselbe machen soll wie vorher. Nach der Überarbeitung soll in den Klammern aber ein Variablenname stehen.

Vor der Einführung einer Variablen (Aufgabe)
{ java.lang.System.out.println( 1.2 ); }

/   Einführung von Variablen (1)

Führen Sie eine Variable für den Ausdruck »"abc"« ein, die innerhalb des unten angegebenen Blocks deklariert wird. Das heißt, daß hinterher an der bisherigen Stelle des Ausdrucks »"abc"« nur noch ein Variablenname stehen soll.

Es soll sich hierbei um einen Refaktor  handeln, das heißt, daß der Block hinterher wieder dasselbe machen soll wie vorher. Nach der Überarbeitung soll in den Klammern aber ein Variablenname stehen.

Vor der Einführung einer Variablen (Aufgabe)
{ java.lang.System.out.println( "abc" ); }

/   Einführung von Variablen (2)

Führen Sie eine Variable für den Ausdruck »java.lang.Thread.currentThread()« ein, die innerhalb des unten angegebenen Blocks deklariert wird. Das heißt, daß hinterher an der bisherigen Stelle jenes Ausdrucks nur noch ein Variablenname stehen soll.

Als Typ  der Variablen soll der Typ des Ausdrucks »java.lang.Thread.currentThread()« verwendet werden.

Es soll sich hierbei um einen Refaktor  handeln, das heißt, daß der Block hinterher wieder dasselbe machen soll wie vorher. Nach der Überarbeitung soll in den Klammern aber ein Variablenname stehen.

Vor der Einführung einer Variablen (Aufgabe)
{ java.lang.System.out.println( java.lang.Thread.currentThread() ); }

/   Übungsaufgabe

Ein Aufruf der statischen Methode »now()« der Klasse »java.time.LocalDate« ergibt ein Objekt der Klasse »java.time.LocalDate« mit dem heutigen Datum. Nennen Sie dieses Objekt »today«.

Ein Aufruf der statischen Methode »of(int,int,int)« der Klasse »java.time.LocalDate« ergibt ein Objekt der Klasse »java.time.LocalDate«, mit dem durch die drei Argumente angegebenem Datum (Jahr, Monat, Tag). Erzeugen Sie auf diese Weise ein Objekt mit dem Datum 2000-01-01 und nennen Sie es »birth«.

Ein Aufruf der statischen Methode »between(java.time.LocalDate,java.time.LocalDate)« der Klasse »java.time.Period« ergibt ein Objekt der Klasse »java.time.Period« mit der Differenz zwischen den beiden Argument vom Typ »java.time.LocalDate«. Rufen Sie diese Methode auf, um die Differenz zwischen »birth« und »today« als Objekt vom Typ »java.time.Period« zu ermitteln und nennen Sie dieses Objekt »diff«.

Ein Objekt vom Typ »java.time.Period« stellt einen Zeitraum dar und enthält eine Methode »getYears()«, welche die ganzen Jahre des Zeitraums ergibt. Rufen Sie die Methode »getYears()« des Objektes »diff« auf, um die Differenz in Jahren zu erhalten und geben Sie das Ergebnis aus.

/   Einführung von Variablen (3) ⃗

Führen Sie eine Variable für den Ausdruck »java.util.logging.Logger.getLogger( "abc" )« ein, die innerhalb des unten angegebenen Blocks deklariert wird. Das heißt, daß hinterher an der bisherigen Stelle jenes Ausdrucks nur noch ein Variablenname stehen soll.

Als Typ  der Variablen soll der Typ des Ausdrucks »java.util.logging.Logger.getLogger( "abc" )« verwendet werden.

Es soll sich hierbei um einen Refaktor  handeln, das heißt, daß der Block hinterher wieder dasselbe machen soll wie vorher. Nach der Überarbeitung soll in den Klammern aber ein Variablenname stehen.

Vor der Einführung einer Variablen (Aufgabe)
{ java.lang.System.out.println
( java.util.logging.Logger.getLogger( "abc" )); }

/   Einführung von Variablen (4) ⃗

Führen Sie eine Variable für den Ausdruck in der Zeile mit dem Kommentar ein.

Main.java

public final class Main
{ public static void main( final java.lang.String[] args )
{

java.lang.System.out.println
(
"alpha[]".replace( "[", "(" ) /* N */
.replace( "]", ")" )); }}

Protokoll
alpha()

/   Einführung von Variablen (5) ⃗

Führen Sie eine Variable für den Ausdruck in der Zeile mit dem Kommentar ein.

Main.java

public final class Main
{ public static void main( final java.lang.String[] args )
{

java.lang.System.out.println
( "alpha".concat
(
"zeta".concat( "gamma" ) /* N */
)); }}

Protokoll
alphazetagamma

Auflösung von Deklarationen ⃗

Bei den folgenden Übungsaufgaben soll jede Verwendung eines Namens durch den Initialisierungsausdruck der Deklaration jenes Namens ersetzt und die Deklaration danach entfernt werden.

Beispielaufgabe ⃗

Main.java

public final class Main
{ public static void main( final java.lang.String[] args )
{

final java.lang.String s = "alpha[]".replace( "[", "(" );

java.lang.System.out.println( s.replace( "]", ")" )); }}

Protokoll
alpha()

Beispiellösung ⃗

Main.java

public final class Main
{ public static void main( final java.lang.String[] args )
{

java.lang.System.out.println
( "alpha[]".replace( "[", "(" ).replace( "]", ")" )); }}

Protokoll
alpha()

/   Übungsaufgabe ⃗

Main.java

public final class Main
{ public static void main( final java.lang.String[] args )
{

final java.lang.String u = "gamma".toUpperCase();

java.lang.System.out.println( "alpha".concat( u )); }}

Protokoll
alphaGAMMA

/   Übungsaufgabe ⃗

Main.java

public final class Main
{ public static void main( final java.lang.String[] args )
{

final java.lang.String u = "gamma".toUpperCase();

java.lang.System.out.println( u.concat( "alpha" )); }}

Protokoll
GAMMAalpha

/   Übungsaufgabe ⃗

Main.java

public final class Main
{ public static void main( final java.lang.String[] args )
{

final java.lang.String u = "gamma".toUpperCase();

java.lang.System.out.println( u.concat( u )); }}

Protokoll
GAMMAGAMMA

Aufruf von Methoden eines Objektes

/   Beispielaufgabe

Rufen Sie die Methode »length()« des Objektes »"abc"« auf! Einmal soll das Objekt ohne Verwendung einer Variablen angegeben werden und einmal durch Verwendung einer Variablen.

Beispiellösung (erster Teil)
java.lang.System.out.println( "abc".length() );
Beispiellösung (zweiter Teil)
final java.lang.String s = "abc";
java.lang.System.out.println( s.length() );

/   Übungsaufgabe _

Der Ausdruck »java.util.logging.Logger.getLogger( "abc" )« hat als Wert ein Objekt. Rufen Sie die Methode »info(java.lang.String)« jenes Objektes mit dem Argument »"def"« auf. Dazu soll das Objekt einmal durch den angegebenen Ausdruck angegeben werden und einmal durch einen Namen.

Bei dieser Aufgabe sollten Wertaufrufe (Aufrufe, die einen Wert haben) in runden Klammern hinter »java.lang.System.out.println« geschrieben werden, und Aufrufe ohne Wert direkt vor ein Semikolon »;«.

/   Übungsaufgabe (1) ⃗

Hinweis für den Dozenten  ► Die Bearbeitung dieser Aufgabe sollte erst nach der Nachbesprechnung der vorigen Aufgabe erfolgen.

Deklarieren Sie eine Variable, deren Wert das Objekt ist, welches sich als Wert des Aufrufs »java.util.TimeZone.getDefault()« ergibt.

Rufen Sie dann die Methode »setID(java.lang.String)« jenes Objekts mit dem Argument »"ghi"« und danach die Methode »getID()« desselben Objektes auf.

Bei dieser Aufgabe sollten Wertaufrufe (Aufrufe, die einen Wert haben) in runden Klammern hinter »java.lang.System.out.println« geschrieben werden, und Aufrufe ohne Wert direkt vor ein Semikolon »;«.

Aussprachehinweis
zone zoʊn

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 stefanram724187 stefan_ram:724187 Objektnamen in Java Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd724187, slrprddef724187, 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/objektnamen_java