<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.byte-welt.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=IKnwWhtUDidLast</id>
	<title>Byte-Welt Wiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.byte-welt.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=IKnwWhtUDidLast"/>
	<link rel="alternate" type="text/html" href="https://wiki.byte-welt.net/index.php/Spezial:Beitr%C3%A4ge/IKnwWhtUDidLast"/>
	<updated>2026-07-07T19:25:48Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.byte-welt.net/index.php?title=%3D%3D,_equals()_und_Identit%C3%A4t_und_Gleichheit&amp;diff=5316</id>
		<title>==, equals() und Identität und Gleichheit</title>
		<link rel="alternate" type="text/html" href="https://wiki.byte-welt.net/index.php?title=%3D%3D,_equals()_und_Identit%C3%A4t_und_Gleichheit&amp;diff=5316"/>
		<updated>2013-08-08T23:22:36Z</updated>

		<summary type="html">&lt;p&gt;IKnwWhtUDidLast: Die Seite wurde neu angelegt: „Ohne dass man es angibt oder nicht, erben alle (selbst geschriebenen) Klassen immer implizit von der Klasse java.lang.Object . In Object ist die Methode equals(Ob…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ohne dass man es angibt oder nicht, erben alle (selbst geschriebenen) Klassen immer implizit von der Klasse java.lang.Object . In Object ist die Methode equals(Object obj) deklariert/definiert:&lt;br /&gt;
&amp;lt;code=java&amp;gt;&lt;br /&gt;
    public boolean equals(Object obj) {&lt;br /&gt;
        return (this == obj);&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/code=java&amp;gt;&lt;br /&gt;
Wie zu sehen ist, überprüft diese Methode auf referenzielle Gleichheit (Identität). Der Wert zweier Variablen ist nur identisch, wenn es sich um ein und dasselbe Objekt handelt (Datentyp: Referenz-Typ), also zwei Variablen auf dasselbe Objekt referenzieren/zeigen.&lt;br /&gt;
&lt;br /&gt;
Oft will man aber den &#039;&#039;&#039;Inhalt&#039;&#039;&#039; von zwei Objekten vergleichen (inhaltliche Gleichheit (= Gleichheit)). Damit ist z. B. die Gleichheit aller Attribute/Objektvariablen von zwei Objekten/Klassen/Variablen gemeint. Deshalb muss die Methode equals() aus Objekt &#039;&#039;&#039;überschrieben&#039;&#039;&#039; werden. Standardmäßig überschreiben auch &amp;quot;alle&amp;quot; Klassen der Java-SE-API diese Methode und geben eine richtige Implementierung / ein richtiges Verhalten vor. Beispiel String:&lt;br /&gt;
&amp;lt;code=java&amp;gt;&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        String str1 = &amp;quot;1234&amp;quot;;&lt;br /&gt;
        String str2 = new String(&amp;quot;1234&amp;quot;); // String pool vermeiden&lt;br /&gt;
        System.out.println(str1 == str2);      // Test auf Identität&lt;br /&gt;
        System.out.println(str1.equals(str2)); // Test auf Gleichheit&lt;br /&gt;
&lt;br /&gt;
        str1 = str2; //... zeigen auf dasselbe Objekt&lt;br /&gt;
        System.out.println(str1 == str2);      // Test auf Identität&lt;br /&gt;
        System.out.println(str1.equals(str2)); // Test auf Gleichheit&lt;br /&gt;
&lt;br /&gt;
        str2 = &amp;quot;2341&amp;quot;;&lt;br /&gt;
        System.out.println(str1 == str2);      // Test auf Identität&lt;br /&gt;
        System.out.println(str1.equals(str2)); // Test auf Gleichheit&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    public boolean equals(Object anObject) {&lt;br /&gt;
        if (this == anObject) {&lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
        if (anObject instanceof String) {&lt;br /&gt;
            String anotherString = (String)anObject;&lt;br /&gt;
            int n = count;&lt;br /&gt;
            if (n == anotherString.count) {&lt;br /&gt;
            char v1[] = value;&lt;br /&gt;
            char v2[] = anotherString.value;&lt;br /&gt;
            int i = offset;&lt;br /&gt;
            int j = anotherString.offset;&lt;br /&gt;
            while (n-- != 0) {&lt;br /&gt;
                if (v1[i++] != v2[j++])&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
            return true;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/code=java&amp;gt;&lt;br /&gt;
Man sollte selber in einer eigenen Klasse equals() z. B. wie folgt überschreiben, wenn die Klasse z. B. 3 Attribute vom Typ int, List und String enthält:&lt;br /&gt;
&amp;lt;code=java&amp;gt;&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
  &lt;br /&gt;
/**&lt;br /&gt;
 * @author&lt;br /&gt;
 */&lt;br /&gt;
public class Vergleichen {&lt;br /&gt;
&lt;br /&gt;
    private int i = 99;&lt;br /&gt;
    private List&amp;lt;String&amp;gt; list = new ArrayList&amp;lt;String&amp;gt;(64);&lt;br /&gt;
    private String string = &amp;quot;stringList&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    public Vergleichen(int i, String string) {&lt;br /&gt;
        //... auf null prüfen,&lt;br /&gt;
        // Variablen setzen&lt;br /&gt;
        this.i = i;&lt;br /&gt;
        this.string = string;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    //... weitere Methoden&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    public boolean equals(Object obj) {&lt;br /&gt;
        if (obj == null) {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        if (getClass() != obj.getClass()) { //... oder instanceof-Operator&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        final Vergleichen other = (Vergleichen) obj;&lt;br /&gt;
        if (this.i != other.i) {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        if ( !this.list.equals(other.list) ) {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        if ( !this.string.equals(other.string) ) {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code=java&amp;gt;&lt;br /&gt;
Hierbei sei ausgeschlossen, dass Attribute der Klasse Vergleichen null sind.&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:iKnwWhtUDidLast|iKnwWhtUDidLast]] 22:50, 08. Aug 2013 (CET)&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Java]]&lt;br /&gt;
[[Kategorie:Java Grundlagen]]&lt;/div&gt;</summary>
		<author><name>IKnwWhtUDidLast</name></author>
	</entry>
</feed>