Anfänger: 2 Objekte vergleichen?

Status
Nicht offen für weitere Antworten.

SirNibo

Mitglied
Hi, kann mir das jemand mit dem Objektevergleichen in Java erklären

class lol
{
int a = 1;

getA()
{
return a;
}
}

class lolTest
{
public static void main (String args[])
{
lol a = new lol();
lol b = new lol();

System.out.println(a.getA() == b.getA()); //ausgabe true (verstehe ich)
System.out.println(a == b); //ausgabe false (wieso false, beide Objekte sind doch gleich) :?:
System.out.println(a.equals(b)); //ausgabe false (wieso false, beide Objekte sind doch gleich) :?:
}
}

Kann man zwei Objekte nicht vergleichen?
 

Ark

Top Contributor
Ein == bei Objekten vergleicht die Referenzen auf die Objekte, nicht die Objektinhalte. Mit == prüft man eher auf "Selbstheit" als auf "Gleichheit" von Objekten. Wenn == true ergibt, zeigen beide Objekte auf dasselbe Objekt, aber nicht zwangsläufig auf ein nur gleiches.

Für Test auf Gleichheit gibt die Methode equals(), die in Object das erste Mal definiert wird und du in deiner Klasse überschreiben musst.

Ark
 

DellCapone

Mitglied
Kannst dir am besten so vorstellen.
du LEITEST von einer Klasse eine Referenz und erstellst ein NEUES Objekt.
lol ab = new lol
lol ba = new lol
und wenn du nun ab==ba vergleichst bekommst du false. Zwar sind die Objekte von der gleichen Klasse abgeleitet aber sind nicht gleich, auch wenn sie den gleichen inhalt haben.

Beispiel
Stell dir vor die Klasse lol ist ein Bauplan für ein Auto.
nun erstellst du nach diesem Bauplan ein auto ab und ba.

beim verlgeich der beiden autos stellst du fest, dass die nie gleich sind aber von dem selben Bauplan erstellt wurden.
 
M

maki

Gast
DellCapone,

das hat rein gar nichts mit ableiten zu tun, und mit Gleichheit auch nicht wirklich...
 

DellCapone

Mitglied
maki hat gesagt.:
DellCapone,

das hat rein gar nichts mit ableiten zu tun, und mit Gleichheit auch nicht wirklich...

Dann sag mir mal bitte was das ist?

String str = "ja";
String str2 = new String("ja");

verlgeich die mal?

str == str2; false
str = str2;
str == str2; true (weil die nun auf das gleiche verweisen)

Objekte kann man nur verlgeichen, wenn die auf das gleiche verweisen.
 
M

maki

Gast
>> Objekte kann man nur verlgeichen, wenn die auf das gleiche verweisen.

Falsch, komplett falsch sogar.

Strings sind speziell, nicht nur dass sie immutable sind, sie werden vom Kompiler auch gesondert behandelt wenn es sich um literale handelt.

== vergleicht nur die Referenz, sonst nix.

equals(..) kann mehr als nur referenzen vergleichen, je nach Implementierung, einfach mal die Api Doku dazu lesen, wenn es danach nicht klar ist etwas von Bloch.
Da ist es dann wichtig, denn Vergleich zu definieren (referentiell, wertegleichheit).

Ableiten heisst Vererben, was du meintest ist instanziieren.
 

Templon

Bekanntes Mitglied
DellCapone hat gesagt.:
maki hat gesagt.:
DellCapone,

das hat rein gar nichts mit ableiten zu tun, und mit Gleichheit auch nicht wirklich...

Dann sag mir mal bitte was das ist?

String str = "ja";
String str2 = new String("ja");

verlgeich die mal?

str == str2; false
str = str2;
str == str2; true (weil die nun auf das gleiche verweisen)

Objekte kann man nur verlgeichen, wenn die auf das gleiche verweisen.

Bei Strings funktioniert das sowieso mal anders. Vergleich mal:

String str = "ja";
String str2 = "ja";
str==str2 // ergibt true (Mit meiner Java Version, irgendwer hat mal gesagt, dass es nicht unbedingt so sein muss^^)

(String-Pool)

---

Um die Objekte zu vergleichen (Nach derem Inhalt), verwendet man normalerweise equals().
 

DellCapone

Mitglied
Templon hat gesagt.:
DellCapone hat gesagt.:
maki hat gesagt.:
DellCapone,

das hat rein gar nichts mit ableiten zu tun, und mit Gleichheit auch nicht wirklich...

Dann sag mir mal bitte was das ist?

String str = "ja";
String str2 = new String("ja");

verlgeich die mal?

str == str2; false
str = str2;
str == str2; true (weil die nun auf das gleiche verweisen)

Objekte kann man nur verlgeichen, wenn die auf das gleiche verweisen.

Bei Strings funktioniert das sowieso mal anders. Vergleich mal:

String str = "ja";
String str2 = "ja";
str==str2 // ergibt true (Mit meiner Java Version, irgendwer hat mal gesagt, dass es nicht unbedingt so sein muss^^)

(String-Pool)

---

Um die Objekte zu vergleichen (Nach derem Inhalt), verwendet man normalerweise equals().

String str = "ja";
String str2 = new Strin("ja");

str==str2; //ergibt false, weil das verschiedene Objekte im Heap sind
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Java als anfänger Allgemeine Java-Themen 6
T Java-Anfänger möchte professionell coden lernen Allgemeine Java-Themen 23
D Anfänger versucht sich an Xtext Allgemeine Java-Themen 0
F Java die richtige Sprache? - Anfänger Allgemeine Java-Themen 3
J-Gallus Erste Schritte Wahrscheinlich Anfänger Fehler beim rechnen. Falsches Ergebnis. Allgemeine Java-Themen 9
J Ein blutiger Anfänger braucht Hilfe Allgemeine Java-Themen 7
M google plus java api - Anfänger sucht Hilfe Allgemeine Java-Themen 7
W Simulation - Anfänger braucht Hilfe Allgemeine Java-Themen 14
M Anfänger Java-Lehrmaterialien? Allgemeine Java-Themen 8
D Listen / Datenstrukturen und ein blutiger Anfänger Allgemeine Java-Themen 7
G Was als fortgeschrittener Anfänger programmieren? Allgemeine Java-Themen 7
S Ganz übler Anfänger - Webseiten mit Java Allgemeine Java-Themen 3
L spezialfrage arraylist -_- anfänger Allgemeine Java-Themen 5
M Frage über Programm (IDE für Anfänger) Allgemeine Java-Themen 6
M <-- java anfänger hat klenes probleeeem :( Allgemeine Java-Themen 15
schegga_B javax.crypto - Cipher Objekte - Sevice Provider matching? Allgemeine Java-Themen 1
berserkerdq2 Weiß jemand wie ich im Scenebuilder das Fenster so darstellen kann, dass beim Vollbildmodus die Objekte so angezeigt werden? Allgemeine Java-Themen 1
A Einzelne Objekte und Unterobjekte einer ArrayList ausgeben Allgemeine Java-Themen 53
B Java Reflection Probleme beim wehcselseitigen Referenzieren zweier Klassen/Objekte Allgemeine Java-Themen 14
N einem Array Objekte hinzufügen die ihr Array position gespeichert haben Allgemeine Java-Themen 34
E Objekte in einen String packen und wieder laden Allgemeine Java-Themen 5
L Objekte in Set nicht gefunden Allgemeine Java-Themen 13
Avalon Data Transfer Objekte aus Datenbank erstellen Allgemeine Java-Themen 8
G Objekte mit Strings Aufrufen Allgemeine Java-Themen 8
H Objekte speichern und laden Allgemeine Java-Themen 10
H Objekte speichern und laden Allgemeine Java-Themen 1
MiMa Referenz auf Objekte und deren Inhalte Allgemeine Java-Themen 12
W Objekte reproduzieren Allgemeine Java-Themen 2
W Objekte per Reflexion instanziieren Allgemeine Java-Themen 7
W Unittest - Objekte simulieren Allgemeine Java-Themen 7
T OOP Objekte mit Erweiterung Initialisieren Allgemeine Java-Themen 6
O Erste Schritte Objekte als Datenelemente Allgemeine Java-Themen 14
J Equals Mock Objekte Allgemeine Java-Themen 5
J Mockito - Objekte miteinander vergleichen (equals) Allgemeine Java-Themen 6
N Bei Mouse Events nicht mehrere Objekte erstellen Allgemeine Java-Themen 13
J Zugriff auf erstellte Objekte einer Klasse von einer Klasse ausserhalb Allgemeine Java-Themen 3
J Java Objekte = null, Garbagecollector Allgemeine Java-Themen 12
F Listen - Mehrere Objekte Allgemeine Java-Themen 1
J Verständnis Frage zur Instanz, Objekte, Instanzierung, Referenz Allgemeine Java-Themen 14
F Objekte erzeugen Allgemeine Java-Themen 1
E Threads ThreadPoolExecutor remove mit callable Objekte Allgemeine Java-Themen 3
P mehrer Verschiedene Objekte in einer Klasse erstellen. Allgemeine Java-Themen 4
E OOP Objekte und Methoden Allgemeine Java-Themen 1
@SupressWarnings() Umgebungsvariable Objekte "gekoppelt" Allgemeine Java-Themen 6
S Algorithmus um Objekte auf einer Flaeche mit gleichem Abstand anzuordnen..? Allgemeine Java-Themen 20
C Objekte in Array List speichern? Allgemeine Java-Themen 1
OnDemand Objekte speichern Allgemeine Java-Themen 8
B Objekte anhand von Properties file Allgemeine Java-Themen 41
U Tiefe Objekte schreiben Allgemeine Java-Themen 1
R Abstrakte Basisklasse und instanzierte Objekte der abgeleiteten Klasse als Basisklasse übergeben Allgemeine Java-Themen 2
E 3D Objekte in 2D Bild finden Allgemeine Java-Themen 5
J Daten aus GUI auslesen und in Objekte umwandeln Allgemeine Java-Themen 6
F FileOutput/Input Objekte Allgemeine Java-Themen 6
OnDemand Objekte serialisieren Allgemeine Java-Themen 3
J unterschiedliche Objekte, selbe getter und setter Allgemeine Java-Themen 15
L Lib gesucht: Java-Objekte mit JSON Allgemeine Java-Themen 2
U Set erklären dass objekte gleich sind Allgemeine Java-Themen 12
E Best Practice Verdammt große Objekte Allgemeine Java-Themen 10
B Mehrere Objekte verschlüsselt serialisieren Allgemeine Java-Themen 6
G Liste anzahl der gleichen Objekte Allgemeine Java-Themen 6
N Objekte an eine andere Applikation übergeben Allgemeine Java-Themen 3
N 2 Objekte zu einer Gruppe zusammenfügen Allgemeine Java-Themen 7
M Instanzierte Objekte in XML Dokument speichern Allgemeine Java-Themen 3
B Verschiedene Objekte in Abhängigkeit eines Typs instanziieren. Allgemeine Java-Themen 17
K Input/Output Im Programm instanzierte Objekte Speichern und laden Allgemeine Java-Themen 3
S OOP Objekte als Return-Werte: Einen Klon zurückgeben oder Instanz auf das Feld? Allgemeine Java-Themen 10
H Objekte Serialisiert speichern Allgemeine Java-Themen 10
L MouseListener für viele Objekte erstellen Allgemeine Java-Themen 16
5 Objekte Sortieren lassen Allgemeine Java-Themen 7
N Objekte aus Array Inhalt erzeugen Allgemeine Java-Themen 8
L Input/Output Textdatei in Objekte überführen? Allgemeine Java-Themen 4
R Input/Output Objekte speichern ohne überschreiben Allgemeine Java-Themen 7
A Collections HashMap.containsKey findet keine immutablen Objekte Allgemeine Java-Themen 3
H Threads Thread stirbt aber Objekte in ihm leben weiter?! Allgemeine Java-Themen 9
M Java Objekte in XML mit JAXB Allgemeine Java-Themen 9
C Strings und JSON Objekte so klein wie möglich im Speicher ablegen Allgemeine Java-Themen 5
H COM-Objekte/ AktiveX Objekte Allgemeine Java-Themen 4
C Script für Website mit Objekte Ausblenden Allgemeine Java-Themen 3
M Txt einlesen & Objekte erzeugen Allgemeine Java-Themen 2
X Objekte aus TableModel serialisieren und deserialisieren Allgemeine Java-Themen 4
T ObjectInputStream - Arrayliste, die unbekannte Objekte enthält Allgemeine Java-Themen 9
B class dateien "einlesen" und objekte erzeugen Allgemeine Java-Themen 6
D Grafische Objekte zeichnen Allgemeine Java-Themen 4
A Wie zur Laufzeit auf Objekte zugreifen Allgemeine Java-Themen 7
F Referenzen auf Objekte Allgemeine Java-Themen 5
H Eclipse und Objekte Allgemeine Java-Themen 6
S Objekte die Objekte enthalten: Keine Vererbung Allgemeine Java-Themen 4
E Objekte in einer Liste suchen. Allgemeine Java-Themen 4
I Über eine Liste iterieren und Objekte löschen. Wie löst man das sauber? Allgemeine Java-Themen 5
I Pattern zum Erweitern existierender Objekte Allgemeine Java-Themen 4
N Dynamische Objekte / DB Allgemeine Java-Themen 5
J Objekte binär speichern Allgemeine Java-Themen 10
TiME-SPLiNTER Unbekannte Anzahl serialisierter Objekte lesen Allgemeine Java-Themen 2
V Objekte in Kategorien einteilen. Allgemeine Java-Themen 6
M 3D Objekte mit einer Linie Verbinden Allgemeine Java-Themen 3
F Wie zur Laufzeit ganz neue Objekte erzeugen? Allgemeine Java-Themen 5
A Dummy-Objekte für Webgui erzeugen Allgemeine Java-Themen 12
W Objekte speichern mit JFileChooser Allgemeine Java-Themen 8
D befehl auf mehrere objekte anwenden Allgemeine Java-Themen 7
L Objekte in Liste packen Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben