Doppeltes Gleich?

Favorite_11

Mitglied
Hallo zusammen,

ich habe ein Problem. Wir haben ein Codebeispiel bekommen und ich weiß nicht genau was das doppelte Gleich-Zeichen im return bedeutet:

Java:
public boolean istAmEnde() {
	return (aktuell.nf == null);
}

Gruß 😉
 
Grundlagen lernen 🙂

Das
Code:
==
ist ein Vergleichs-Operator. Vergleiche liefern immer
Code:
boolean
Werte. Als beispiel:

Folgende beiden Code-Beispiele sind exakt das selbe:
Java:
if (fensterWinkel > 0)
{
    System.out.println("Das Fenster ist auf");
}
else
{
    System.out.println("Das Fenster ist zu");
}
Java:
boolean fensterIstAuf = fensterWinkel > 0;
if (fensterIstAuf)
{
    System.out.println("Das Fenster ist auf");
}
else
{
    System.out.println("Das Fenster ist zu");
}
 
Zuletzt bearbeitet:
Ein Beispiel, wo gar kein == vorkommt!? :autsch:

Wie du mit
Code:
>
und
Code:
<
prüfen kannst, ob Zahlen größer oder kleiner als andere sind, kannst du mit
Code:
==
testen, ob zwei Dinge (nicht nur Zahlen) gleich (identisch) sind.

Wenn du Objekte miteinander vergleichen möchtest, dann bietet sich aber eher die Methode [c]equals(Object o)[/c] an, die jedes Objekt hat.

Mehr Grundlagen gibts hier. :rtfm: 😉
 
Ein Beispiel, wo gar kein == vorkommt!? :autsch:

Wie du mit
Code:
>
und
Code:
<
prüfen kannst, ob Zahlen größer oder kleiner als andere sind, kannst du mit
Code:
==
testen, ob zwei Dinge (nicht nur Zahlen) gleich (identisch) sind.

Wenn du Objekte miteinander vergleichen möchtest, dann bietet sich aber eher die Methode [c]equals(Object o)[/c] an, die jedes Objekt hat.

Da stellt sich jetzt die Frage, was das größere Vergehen ist. Dass dem TE die Intelligenz unterstellt wird, die Analogie zwischen einem
Code:
>
und einem
Code:
==
zu erkennen oder aber dass hier das Bild vermittel wird, man könne Zwei Objekte mittels
Code:
==
auf Identität prüfen. Denn lezteres ist schlicht falsch.
Code:
==
prüft immer, ob zwei Referenzen auf das selbe Objekt zeigen. Das Funktioniert bei primitiven Datentypen nur, weil die JVM bei einer Referenz auf eine schon bestehende, identische Zahl die gleichen Referenzen benutzt.
 
Ich glaube er meinte ,

Code:
==
Vergleicht Referenzen und liefert einen booleschen Wert.

Beim nutzen des Verlgeichsoperators
Code:
==
, werden lediglich Referenzen der 2 Objekte Verglichen
(Belegung von Attributen werden hier ignoriert)

bedeutet in deinem Konkreten fall, das wenn

Code:
aktuell.nf
( was auch immer das sein soll ? Klasse? Variable ? Deklaration inkorrekt ?!)

mit null initialisiert wurde true liefert

andernfalls false liefert;

Das Bedeutet das 2 Objekte die gleiche Identität haben können , jedoch nicht zwingend auch gleich, im Sinne von "gleich" sind.
 
Zuletzt bearbeitet:
Da stellt sich jetzt die Frage, was das größere Vergehen ist. Dass dem TE die Intelligenz unterstellt wird, die Analogie zwischen einem
Code:
>
und einem
Code:
==
zu erkennen
Intelligenz zu unterstellen halte ich nie für falsch. 😉 Und auf Zahlen bezogen (womit ich ja argumentiert habe) empfinden ich es als durchaus sinnig,
Code:
==
mit
Code:
>
und
Code:
<
auf eine Ebene zu stellen. Denn eine Zahl kann größer, kleiner oder eben gleich einen andere Zahl sein. Viel intuitiver gehts wohl kaum.

oder aber dass hier das Bild vermittel wird, man könne Zwei Objekte mittels
Code:
==
auf Identität prüfen. Denn lezteres ist schlicht falsch.
Kommt stark darauf an, wie du Identität jetzt definierst. Wenn ich wissen möchte, ob zwei variablen das selbe Objekt beinhalten, dann kann ich durchaus
Code:
==
verwenden, weile es eben die Referenzen (wie du ja auch selbst schreibst) vergleicht. Um zu prüfen ob zwei Objekte semantisch gleich sind, sollte man eh
Code:
equals
verwenden.

Code:
==
prüft immer, ob zwei Referenzen auf das selbe Objekt zeigen. Das Funktioniert bei primitiven Datentypen nur, weil die JVM bei einer Referenz auf eine schon bestehende, identische Zahl die gleichen Referenzen benutzt.
Ich halte es nicht für schlau einen Anfänger mit Referenzen zu konfrontieren. Denn diese Spielen in Java eigentlich keine Rolle, da nicht zwischen Pointer und Objekt unterschieden wird.
 
Ich halte es nicht für schlau einen Anfänger mit Referenzen zu konfrontieren. Denn diese Spielen in Java eigentlich keine Rolle, da nicht zwischen Pointer und Objekt unterschieden wird.

Naja, wenn es um Pass-by-Reference oder Pass-By-Value geht ist es schon wichtig, das prinzip von Referenzen zu verstehen. Pointer sind natürlich wieder ne Geschichte für sich und in Java unwichtig.
 
Ok vielen Dank. Habt mir sehr geholfen.

Also generell wusste ich das == der Vergleichsoperator ist aber wusste nicht, dass man es auch einfach so im return benutzen kann..

Zu nf: Es geht hier um eine Klasse, die eine Liste abbildet. nf verweist auf das nächste Element in der Liste...
 
Klassen schreibt man groß, variablen lowerCamelCase
Bedeutet konkret Du müsstest es so schreiben
Und auch dementsprechend deklarieren
Java:
Aktuell.nF

Zudem sollte man eindeutige und aussagekräftige Bezeichner verenden, sonst entsteht schnell totales Chaos 🙂
 
Zuletzt bearbeitet:

Zurück
Oben