Methoden Vergleich von int Zahlen

F

Freakyard

Gast
Hallo,

ich möchte zwei Integer vom Typ int x1 und int x2 vergleichen. Normalerweise gibt es doch die equals() methode, aber eclipse sagt, die Methode gibt es bei primitiven Typen wie int nicht. Hat jemand eine Lösung?
 
F

Freakyard

Gast
Erstmal danke für deine Antwort. Aber == vergleicht doch nur, ob es Objecte derselben Klasse sind und nicht die tatsächlichen Werte, oder?
 

Volvagia

Top Contributor
Nein. == vergleicht die Referenz der beiden, also ob beide Variablen auf das selbe Objekt zeigen. Ich weiß zwar nicht, wie genau das bei primitiven Typen ist (ich denke, endweder gibt es einen Pool wie bei Strings, oder der Operator ist überladen), aber die werden so verglichen.
 
T

Tomate_Salat

Gast
afaik funktioniert das so:
bei primitiven Datentypen wird immer der Wert übergeben, bei einer Methode z.B.:
Java:
int foo=5;
myObj.doSomething(foo);
wird hier die 5 mitgegeben. Bei dem vergleich prüft == hier also direkt die Werte.
Bei komplexen schaut das anderster aus:
Java:
Object myObject=new MyCoolObject();
someOtherObject.parse(myObject);
hier wird nicht das Objekt, sondern die Refernenz übergeben. Mit == würdest du also die referenzen prüfen. Um an die Attribute/Methoden zu gelangen, musst du erst dereferenzieren mit dem [c].[/c]
Java:
public void parse(IParseable parsableObject)
{
      parseble./*hier wurde derefernziert und nun können wir hier weiterarbeiten*/toString();
}

kann mich aber auch irren :)
 
S

SlaterB

Gast
== vergleicht quasi den exakten Inhalt der Variablen,
bei primiven Datentypen steht der Wert direkt drin (Speicherplatz 1 bis 8 Byte, boolean bis double)

bei Referenzen auf Objekte (immer 4 Byte) werden die beiden Referenzen verglichen, weil das eben die Werte direkt in den entsprechenden Variablen sind
 

Sonecc

Gesperrter Benutzer
anderst, anderster... was sind dass denn bitte für worte??

Dem TO sei jedenfalls mal die Java Insel nahe gelegt. Ihm fehlen die absoluten Grundlagen (nicht nur in Java)
 

Andi_CH

Top Contributor
Java ist halt leider auch nicht immer konsistent. Warum es für Basistypen kein .equals gibt ist ja nicht so klar und warum
Code:
if (a=b)
unter gewissen Umständen erlaubt ist auch nicht

(Deutsch ist tatsächlich etwas, das hier sträflich vernachlässigt wird :noe: )
 
Zuletzt bearbeitet:

nrg

Top Contributor
Java ist halt leider auch nicht immer konsistent.
vllt nicht immer aber in diesem fall schon

Warum es für Basistypen kein .equals gibt ist ja nicht so klar und warum
Code:
if (a=b)
unter gewissen Umständen erlaubt ist auch nicht
weil primitive datentypen keine objekte sind vielleicht?? if (a=b) wird schonmal garnicht kompilieren, ausser a und b sind booleans.

wenn dir das nicht passt, arbeite doch allgemein mit wrapper :D. die kann man zwar, wenn nicht mit new instanziiert (autoboxing), auch referenziell vergleichen aber kannste wenn es dir spass macht auch equals nehmen ;)
 

Andi_CH

Top Contributor
Inkonsistenz ist doch ein Zeichen von Schwäche oder Fahrlässigkeit oder beidem. :D
- Man wollte ums verr...... die C-Programmieren an Bord holen.
- Man wollte Performance erreichen - (Sorry, aber wenn ich performant sein will, programmiere ich sicher nicht auf einer VM! Auch dann nicht, wenn ich extrem wenig Memory habe!)
- Alles Käse: Man hat einfach nicht daran gedacht

Wenn ich auf einem gewissen abstrakten Niveau programmiere, will ich mich doch nicht mehr darum kümmern ob ich == oder .equals nehmen muss (Die Häufigkeit der Frage warum == bei Strings nicht funktioniert untermauert meine Einstellung - ebenso das Thema, dass == dummerweise manchmal eben doch das richtige Resultat liefert)

Warum gibt es überhaupt int und Konsorten? Die könnte man abschaffen (nein, bitte nicht mit Performance und Speicherbedarf kommen!)
 
S

SlaterB

Gast
ein Kriterium, welches du noch nicht genannt hast, ist einfacher lesbarer Code

> Warum gibt es überhaupt int und Konsorten?

es steht jedem frei, die primitiven Datentypen (nahezu) nicht zu verwenden,
stattdessen Integer bis BigDecimal oder komplett eigene entsprechende Klassen,
dann nur Methoden wie equals(), add() usw.

oft ist ja eher die Frage andersrum, warum man für Klassen nicht auch Operatoren wie + oder eben == neu definieren kann
 
Zuletzt bearbeitet von einem Moderator:

nrg

Top Contributor
ich weiß nicht, wo das problem ist. mit bisschen sprachverständnis weiß man doch genau, was zu tun ist. klar tappt da jeder anfänger erst mal in die falle - ging mir nicht anders.

ebenso das Thema, dass == dummerweise manchmal eben doch das richtige Resultat liefert)

das ist nicht "manchmal" so. wenn der referenzielle vergleich bei objekten true liefert, ist es ganz einfach ein und das selbe objekt im heap bzw. das selbe literal im pool. wenn man weiß warum das so ist, ist doch alles in butter :)
 

Andi_CH

Top Contributor
Java:
Integer x1 = 5;
Integer x2 = 6;
Integer x3 = x1 + x1;
Boolean b1 = true;
Boolean b2 = false;
Boolean b3 = b1 && b2;
if (b3) {}
//sogar würgen ist leider möglich
if (b3 = b1 && b2) {}

Wo ist das Problem damit, wenn es int und boolean nicht mehr gäbe? Mir fällt im Moment keine einzige relevante Einschränkung ein.

Und was Problem mit dem "du muss ja nicht, wenn ... " ist, dass Menschen dazu neigen den erst besten Weg zu gehen und nicht zu hinterfragen ob es auch wirklich der Beste ist. JEDE höhere Programmiersprache zwingt den Programmierer gewisse Regeln einzuhalten. C macht das zu viel wenig und Java in einigen Bereichen leider auch.

Das fehlende Operatoroverloading wurde mit Sicherheit begründet - mag ja sein, aber ich habe das noch nicht wirklich vermisst.
 
S

SlaterB

Gast
mit Autoboxing, was es noch gar nicht so lange gibt (ok, schon 6 Jahre oder so, aber gerademal die vorletzte große Version, weil Java ja kaum mehr Updates hat ;) ), ist in der Tat auf die Schnelle kein großer Unterschied zu sehen,
wenn man die inneren Schmerzen der ständigen Umwandlung ausblenden kann

spontan fällt mir nur ein, dass Variablen, besonders Methodenparameter, null sein können,
manche würden sagen eine weitere Schwäche von Java ;)

ohne Autoboxing mit beliebigen Klassen hätte man das Problem der schlechten Syntax,
so aber,wenn man jetzt noch weiterhin +, -, <, <= usw. einsetzt,
fällt es vielleicht schwer, ausgerechnet auf == zu verzichten und stattdessen equals() zu schreiben:

Java:
public class Test {
    public static void main(String[] args)  {
        Integer a = 500;
        Integer b = 500;

        if (a <= b && a >= b)  {
            System.out.println("dann müsste a doch gleich b sein?");
            System.out.println(a == b);
            System.out.println(a.equals(b));
        }
    }
}

edit:
selbst das elementare && in if und sonstigen Kontrollstrukturen setzt auf den primitiven Datentyp boolean auf
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Vergleich und Ausgabe von Zahlen Java Basics - Anfänger-Themen 1
W Vergleich mit If-Abfrage nur für Zahlen bis 07 möglich - Warum? Java Basics - Anfänger-Themen 7
S Multiplikation durch Addition, Subtraktion und Vergleich von Zahlen Java Basics - Anfänger-Themen 14
S String Vergleich mit Passwort geht nur bei Zahlen ? Java Basics - Anfänger-Themen 7
heinrich172 Methoden Trotz gleichem Element stimmt Vergleich nicht? Java Basics - Anfänger-Themen 7
U Interface als PAramter (Vergleich) und ein Error Java Basics - Anfänger-Themen 9
K Erste Schritte Wie schnell ist LinkedHashMap im Vergleich zur ArrayList, wenn alle Entries durchlaufen werden? Java Basics - Anfänger-Themen 47
B Performance-Vergleich mit C++ Java Basics - Anfänger-Themen 55
K Rekursiver Vergleich von Textmuster und Text Java Basics - Anfänger-Themen 2
Zeppi Vergleich von Array-Inhalten Java Basics - Anfänger-Themen 14
Lena_2611 Vergleich von Array1 Index mit Array2 Wert und erzeugen eines neues Arrays Java Basics - Anfänger-Themen 8
B Date - Vergleich (equals / after) ? Java Basics - Anfänger-Themen 3
J Problem beim vergleich von zwei Integer Java Basics - Anfänger-Themen 3
W Vergleich von DatenPaketen Java Basics - Anfänger-Themen 6
B String vergleich Java Basics - Anfänger-Themen 3
C Probleme mit String-Vergleich Java Basics - Anfänger-Themen 4
K File-Name Vergleich Java Basics - Anfänger-Themen 2
V Fließkommazahlen Vergleich Java Basics - Anfänger-Themen 7
J Vergleich Java Basics - Anfänger-Themen 2
N Vergleich von Strings schlägt fehl.. Java Basics - Anfänger-Themen 5
S Vergleich zweier ArrayLists mit Ausgabe an dritte ArrayList Java Basics - Anfänger-Themen 5
G Klassen Vergleich zweier Klassen Java Basics - Anfänger-Themen 23
J Fehler bei Vergleich auf den grössten Wert Java Basics - Anfänger-Themen 2
A Do-While Schleife; int vergleich Java Basics - Anfänger-Themen 2
G Wieviel kostet der Zugriff auf Objektattribute im Vergleich zur Erstellung von vars in Methode? Java Basics - Anfänger-Themen 11
T Input/Output String-Vergleich schlägt fehl Java Basics - Anfänger-Themen 7
W Konvertierung und Vergleich unterschiedlicher Zeitformate Java Basics - Anfänger-Themen 11
L Vergleich zweier Variablen, mit Abweichung Java Basics - Anfänger-Themen 3
N Methoden Methode zum Vergleich zweier Geburtstage Java Basics - Anfänger-Themen 5
M String-Vergleich und NullPointerException Java Basics - Anfänger-Themen 4
M Vergleich zweier Array Stellen mit equals/NullpointerException Java Basics - Anfänger-Themen 9
L PW-Vergleich Java Basics - Anfänger-Themen 5
N Vergleich zweier String Arrays scheitert Java Basics - Anfänger-Themen 3
S Vergleich von Listen Java Basics - Anfänger-Themen 6
J vergleich von arrays (benötige Hilfe/Denkanstoß) Java Basics - Anfänger-Themen 16
V Einfacher vergleich von Arrays geht schief Java Basics - Anfänger-Themen 2
T Operatoren Multiplikation nur mit Addition, Subtraktion und Vergleich Java Basics - Anfänger-Themen 29
N Methoden Array vergleich funzt nicht Java Basics - Anfänger-Themen 8
B Char-Vergleich Sonderzeichen Java Basics - Anfänger-Themen 6
S Vergleichsmethode zum Objekt-Vergleich mit < und > Java Basics - Anfänger-Themen 4
F Problem bei Vergleich Java Basics - Anfänger-Themen 3
S File vergleich - Junit Java Basics - Anfänger-Themen 6
P String-Vergleich Java Basics - Anfänger-Themen 3
W Vergleich ob Buchstabe in einem Wort enthalten ist Java Basics - Anfänger-Themen 3
C String Objekte Vergleich je nach Instanzierung unterschiedlich!!?!! Java Basics - Anfänger-Themen 4
R String-Vergleich Java Basics - Anfänger-Themen 15
C Variablen Vergleich funktioniert nicht Java Basics - Anfänger-Themen 11
J Erste Schritte Vergleich der String-Objekte Java Basics - Anfänger-Themen 17
B Zwei verschiedene Daten vergleich Java Basics - Anfänger-Themen 2
A Variablen Vergleich Java Basics - Anfänger-Themen 5
P Erste Schritte vergleich substring und string Java Basics - Anfänger-Themen 4
G Date - Calender | "Vergleich" Java Basics - Anfänger-Themen 3
M Vergleich mit Toleranz Java Basics - Anfänger-Themen 7
B Objekt Vergleich - Unterschiede ausgeben Java Basics - Anfänger-Themen 4
P Vergleich mit Variablen Java Basics - Anfänger-Themen 6
Y Java Programm URL und String Vergleich! Java Basics - Anfänger-Themen 4
K Vergleich von variable und array Java Basics - Anfänger-Themen 9
L vergleich zweier texte Java Basics - Anfänger-Themen 18
H Beim Vergleich/Sortieren mehr als zwei Objekte berücksichtigen Java Basics - Anfänger-Themen 14
B Vergleich zweier Objekte durch "Hashfunktion" Java Basics - Anfänger-Themen 12
P Vergleich von Enums Java Basics - Anfänger-Themen 4
S String Vergleich funktioniert nicht Java Basics - Anfänger-Themen 3
A String-Vergleich geht nicht Java Basics - Anfänger-Themen 2
U Automatenprüfung in Java implementieren — String Vergleich klappt nicht Java Basics - Anfänger-Themen 40
F Login Passwort-Vergleich Java Basics - Anfänger-Themen 12
N Vergleich per equals Java Basics - Anfänger-Themen 5
Z XML Vergleich Java Basics - Anfänger-Themen 20
S Herunterladen von Dateien mit Vergleich Java Basics - Anfänger-Themen 6
L Problem String-Vergleich Java Basics - Anfänger-Themen 2
E Objekte-Vergleich Java Basics - Anfänger-Themen 6
Y Datentypen String vergleich Java Basics - Anfänger-Themen 3
R Vergleich von Objekten anhand variierender Kriterien Java Basics - Anfänger-Themen 5
K Datentypen Arrays in Java - Adress-Arithmetik im Vergleich zu Listen Java Basics - Anfänger-Themen 4
S equals vergleich Java Basics - Anfänger-Themen 10
A Datentypen instanceof VS Class - Vergleich Java Basics - Anfänger-Themen 4
M Char vergleich zu Int Java Basics - Anfänger-Themen 10
G Wann ist ein == Vergleich bei Gleitkommazahlen fahrlässig? Java Basics - Anfänger-Themen 8
algorismi Ausführungszeit Vergleich == true Java Basics - Anfänger-Themen 8
J Performance Vergleich von if-Abfragen mit mehreren Bedingungen Java Basics - Anfänger-Themen 9
T Zwei listen vergleich und selbige löschen Java Basics - Anfänger-Themen 4
T Vergleich mit Typecasts Java Basics - Anfänger-Themen 3
Screen Eine Frage zu moueMove in applets und deren Vergleich Java Basics - Anfänger-Themen 11
M Vergleich Float-, Doublewert Java Basics - Anfänger-Themen 10
G Vergleich zweier Arrays Java Basics - Anfänger-Themen 8
U Methode Vergleich von 2 Arrays Java Basics - Anfänger-Themen 5
G Vergleich klappt nicht Java Basics - Anfänger-Themen 3
T Vergleich von generischen Typen Java Basics - Anfänger-Themen 2
C DB Vergleich mit Eingabe Java Basics - Anfänger-Themen 5
G Vergleich großer Basen/Exponenten? Java Basics - Anfänger-Themen 3
F Vergleich von Objekten Java Basics - Anfänger-Themen 2
N Vergleich findet nicht statt. Java Basics - Anfänger-Themen 13
M 2 Fragen: Vergleich, aber wie? Was passiert in diesem Teil? Java Basics - Anfänger-Themen 18
A Vergleich schlägt fehl Java Basics - Anfänger-Themen 15
G Vergleich bei MD5-Verschlüsselung Java Basics - Anfänger-Themen 3
R +1 Vergleich Java Basics - Anfänger-Themen 3
E Char vergleich Java Basics - Anfänger-Themen 7
loadbrain Array vergleich mit 2 for schleifen Java Basics - Anfänger-Themen 6
D Vergleich von ListenElementen Java Basics - Anfänger-Themen 2
M Problem bei einem Vergleich Java Basics - Anfänger-Themen 6
G Vergleich Eingabe mit Wert in vorhandenem Array Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben