AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [Java] Equals und Typen mit Wertesemantik
Thema durchsuchen
Ansicht
Themen-Optionen

[Java] Equals und Typen mit Wertesemantik

Ein Thema von phXql · begonnen am 6. Dez 2007 · letzter Beitrag vom 6. Dez 2007
Antwort Antwort
Benutzerbild von phXql
phXql

Registriert seit: 11. Mär 2004
Ort: Mühldorf
824 Beiträge
 
#1

[Java] Equals und Typen mit Wertesemantik

  Alt 6. Dez 2007, 17:19
Hallo Leute,

ich sitze gerade an meiner Hausaufgabe. In dieser soll man einen Klassengenerator für Java schreiben. Dieser muss auch die equals()-Methode für die zu erzeugende Klasse generieren.
Wie vergleiche ich in equals() zwei Objekte, die Wertetyp-Semantik (also keine veränderlichen Instanzvariablen) haben? Mit equals() oder mit ==?

also
Code:
if (this.o != other.o)
  return false;
oder

Code:
if (!this.o.equals(other.o))
  return false;
?
"Dunkel die andere Seite ist"
"Yoda! Halts Maul und iss deinen Toast!"
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#2

Re: [Java] Equals und Typen mit Wertesemantik

  Alt 6. Dez 2007, 17:32
Hi,
Objekte vergleicht man an sich immer mit equals. Der Operator == vergleicht, angewendet auf Objekte, immer nur ob diese die selbe Instanz referenzieren (also ob hier auf den gleichen Speicherbereich gezeigt wird). Nur bei primitiven Datentypen (byte, short, int, long, boolean, double, float, char) führt == einen Vergleich der Belegung durch. Selbst für den Vergleich von zwei Integer - Werten (also der Typ ist die Klasse Integer) sollte equals verwendet werden (keine Ahnung was durch Autoboxing aus == gemacht werden würde).

Gruß Der Unwissende
  Mit Zitat antworten Zitat
Benutzerbild von phXql
phXql

Registriert seit: 11. Mär 2004
Ort: Mühldorf
824 Beiträge
 
#3

Re: [Java] Equals und Typen mit Wertesemantik

  Alt 6. Dez 2007, 18:23
Mh okay, das hab ich mir gedacht. Danke. (Hab zur Sicherheit nochmal meinem Prof ne Mail geschrieben, aber ich denke der wird das selbe sagen.)
"Dunkel die andere Seite ist"
"Yoda! Halts Maul und iss deinen Toast!"
  Mit Zitat antworten Zitat
Benutzerbild von yankee
yankee

Registriert seit: 10. Mär 2004
1.134 Beiträge
 
Lazarus
 
#4

Re: [Java] Equals und Typen mit Wertesemantik

  Alt 6. Dez 2007, 18:24
Zitat von Der_Unwissende:
Nur bei primitiven Datentypen (byte, short, int, long, boolean, double, float, char) führt == einen Vergleich der Belegung durch.
Oberlehrermodus An:
Es wird immer ein Vergleich der Belegung durchgeführt. Delphi und Java verhalten sich da auch gleich.

Der Punkt ist: Ein Objekt ist ein Pointer. Also in Java eigentlich 'ne Referenz, aber eine Referenz ist auch nur ein "abgespeckter" Pointer . Und wenn du so einen Quelltext hast:
Delphi-Quellcode:
var i,i2: ^integer;
begin
  new(i); new(i2);
  i^ :=5;
  i2^ :=5;
  i = i2 //false
  i^ = i2^ //true
end;
dann sieht man, dass man zwei Variabeln nicht gleich sind, obwohl sie auf den gleichen Wert zeigen.
Ich hoffe das konnte man jetzt verstehen...
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.

Have a lot of fun!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz