Frage von sesika10, 14

Java-Code - Minimales Stackproblem :D?

Also bin gerade dabei ein Stack zu implementieren. Ich möchte mit einer Methode isEmpty überprüfen ob dieser nach der Initialisierung leer ist. Es handelt sich erst einmal nur um eine Klasse namens "Stack", in der es drei Attribute gibt: Stack before; Stack next; int value. Nachdem ich in der main methode ein Objekt der Klasse Stack erstelle, teste ich diesen auf Leerheit über die Methode isEmpty, genau gesagt teste ich den Bezeichner des Objektes, ob dieser leer ist, aber die Ausgabe ist false. Hier mal der kleine Code:

public class Stack {

    Stack before;
    Stack next;
    int value;

    static boolean isEmpty(Stack s){
        return s == null;
            }

           public static void main {
              Stack s1 = new Stack();
               System.out.println(isEmpty(s1));
            }

Hier erhalte ich den Wert false, also nicht leer.Ist es darauf bezogen, dass das Objekt überhaupt einen Inhalt besitzt unabhängig von deren Werten und deshalb nicht leer ist? Und wie kann ich die richtige Ausgabe erzeugen?

Danke im voraus

Antwort
von sebreuerDe, 5

Der Vergleichsoperator (==) leistet in Bezug auf Objekte keinen inhaltlichen Vergleich, sondern einen Referenzvergleich.

Da du bereits ein Objekt angelegt hast, hat dieses zwangsläufig eine Referenz und muss daher im Vergleich mit null false sein.

Wenn du eine "Inhaltsangabe" deines Objektes möchtest, könntest du mit toString arbeiten.
Ich sehe aber nicht, wie du Daten innerhalb deines Stacks abspeichern möchtest - In den Stack-Attributen der Klasse Stack?

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten