Belegung einer Referenzvariablen

ThommyTom

Aktives Mitglied
Hallo liebes Forum,
ich habe wirklich nur eine kleine Frage:
Was genau ist die Belegung einer Referenzvariablen? Die Referenz oder das referenzierte Objekt?

Ich persönlich wäre ja für Referenz, aber dann sehe ich nicht ein, wiese die folgende Aussage falsch sein soll:
Zwei verschiedene Referenzvariablen, die auf das selbe Objekt verweisen, haben verschiedene Belegungen.

Danke für eure Hilfe,
Tom
 
Dann wäre die Aussage aber falsch. Diese Aussage soll ja richtig sein. Wer sagt denn sowas? Ich wäre auch dafür, dass die Belegung einer Variablen ihr Wert ist und bei Instanzvariablen sind das Speicheradressen.
 
In unserem Skript steht, dass man bei Referenzvariablen zwischen zwei Sachen unterscheiden muss:
1. Der Belegung mit einer Referenz auf einem Objekt
2. das referenzierte Objekt.

Dem entnehme ich, dass die Belegung eben die Referenz ist und nicht das Objekt. Und dann wäre die Aussage wahr.

Oder wie versteht ihr das?
 
Referenzvariablen (sofern nicht final) können alle Objekte dieses Typs aufnehmen und die Belegung kann gewechselt werden.
Das Objekt ist etwas ganz anderes. Die Variable zeigt auf das Objekt und das Objekt IST das Objekt. Wenn du über die eine Variable etwas an dem Objekt änderst, dann ist das Objekt hinter der anderen auch verändert (was manchmal für echt nervtötende Bugs sorgt).

Diese Aussage bringt uns der Beantwortungü der Eingangsfrage aber nicht näher. Du hast gesagt, zwei Variablen, die auf dasselbe Objekt zeigen, hätten unterschiedliche Belegungen. Woher nimmst du diese Annahme?
 
Die Belegung einer Referenzvariablen ist natürlich eine Referenz.
Wenn zwei Referenzvariablen auf das selbe Objekt verweisen, dann ist die Belegung von beiden Variablen ein und die selbe Referenz. Eine Referenz ist in der Regel die Adresse im Arbeitspeicher, an der sich das Objekt befindet.
Daraus folgt, dass die Aussage falsch ist.
 
Zuletzt bearbeitet:
Danke Leute, ich habe es nun verstanden. Die Aussage ist falsch 🙂 Dann passt das ja alles zusammen.

Dürfte ich noch drei andere kleinere Fragen stellen? Deswegen ein neues Thema zu erstellen wäre glaube ich zu viel.
1) Wieso ist der nachfolgende Satz richtig: "Wenn eine Klasse A eine Methode mit dem Methodenkopf boolean equals(A other) definiert, dann ist equals in der Klasse A überladen. "

Die Methode equals wird doch redefiniert, es gibt also garkeine zwei Methoden mit dem selben Namen, oder wie ist das?

2) Ist es so, dass man das @Test in einer JUnit Testklasse problemlos weglassen darf?

3) Folgender Quelltext:
int[] temperaturen = new int[8];
temperaturen = {1,2,3,4,5,6,7,8};

Wieso gibt dies einen Fehler?
 
Zuletzt bearbeitet:
Ne. Darfst du nicht 😛ueh:

Zu erstens: Du kannst so viele Methoden mit demselben Namen haben, wie es unterschiedliche Parameter gibt. Ich glaube sogar
Code:
void test(int i, char c)
und
Code:
void test(char c, int i)
funktionieren. Macht nur keiner. 🙂 Wenn es zwei Methoden mit demselben Namen aber unterschiedlichen Parametern gibt, so ist die zuerst implementierte überladen. (oder die andere. Nach zwei Tagen weiß keiner mehr, wer zuerst da war 🙂 )
Da alles von [JAPI]Object[/JAPI] erbt und es schon ein equals in Object gibt, ist equals überladen. Ich glaube, dass ist gefordert.

Zu drittens: Ich weiß nicht, wie du das hast aber mein Compiler meldet mir:
Java:
Array constants can only be used in initializers
Da haben wir es schon.
Java:
int[] i = new int[]{1,2,3,4,5,6,7,8}//funktioniert
int[] a = {1,2,3,4,5,6,7,8}//funktioniert auch

Zu zweitens: JUnit habe ich nie benutzt aber ich glaube, dass ist kein Teil von Java sondern ein Teil der API, weswegen das einfach eine Klasse ist, die Methoden zum Testen von Dingen bereitstellt. Das @Test sagt nur von Anfang an aus, dass es sich um einen Test handelt.
 
Hallo! 🙂

1. okay.
2. Es geht mir hier um diesen Satz "Methoden in einer JUnit-Testklasse, die nicht mit @Test annotiert wurden, haben keinen Einfluss auf die Ausführung der Testfälle."
Dieser Satz soll falsch sein. Ich habe aber herausgefunden (durch ausprobieren), dass, wenn man das @Test weglässt, der Testfall nicht ausgeführt wird. Wieso soll der Satz denn falsch sein?
3. Also kann man diese Mengenschreibweise nur bei der Initialisierung machen?
 
Zuletzt bearbeitet:
Okay, also das @Test muss wohl immer ran.
Aber wieso ist dann die Aussage trotzdem falsch? Wenn man das @Test weglässt, wird der Testfall nicht ausgeführt und hat auch somit keinen Einfluss.

Noch etwas letztes:
Ist die Deklaration von Exemplarvariablem immer gleich der von lokalen Variablen?
Man hat ja bei Exemplarvariablem noch public/private davor, aber gehört das zur Deklaration?
 
Das sind sog. Modifier (Schreibweise ähnlich), die die Sichtbarkeit von Variablen "einstellen". Guck dir dazu mal die Tabelle in Java-Syntax in der Wikipedia an.
 
Hallo,
was das ist, war mir schon klar. Die Frage ist nur, ob das zur Deklaration gehört oder eben nicht bzw. ob die Aussage "Die Deklaration von Exemplarvariablen und lokaen Variablen ist immer gleich" wahr oder falsch ist.
 

Neue Themen


Zurück
Oben