Java Academy · Les

this en toString/equals/hashCode

Gebruik this om naar het huidige object te verwijzen, schrijf nuttige toString-methoden en implementeer equals en hashCode correct.

Les 1 van 38 stappen

this en toString/equals/hashCode is een gratis Java Academy-les op CoddyKit. Dit is les 1 van 3. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Java Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Java Academy bevat in totaal 3 lessen.

Het sleutelwoord this

this verwijst naar het huidige object. Gebruik het om velden te benaderen of een andere constructor aan te roepen. Het helpt wanneer parameternamen hetzelfde zijn als veldnamen, zodat je bedoeling duidelijk blijft.

Leesbare toString

toString() geeft een menselijk leesbare samenvatting van een object terug. Overschrijf de methode om belangrijke velden zoals id en name te tonen. Zo worden logregels en afdrukken voor foutopsporing veel gemakkelijker te begrijpen.

equals versus ==

equals controleert logische gelijkheid, terwijl == controleert of twee verwijzingen naar hetzelfde object wijzen. De meeste domeinklassen moeten equals overschrijven om op inhoud te vergelijken, niet op geheugenadres.

hashCode komt overeen met equals

hashCode moet consistent zijn met equals: als a.equals(b) waar is, moet a.hashCode() gelijk zijn aan b.hashCode(). Deze regel is nodig om HashSet en HashMap correct te laten werken.

Tips en valkuilen

Kies stabiele velden voor gelijkheid, zoals id of email, en houd toString kort. Gebruik geen veranderlijke verzamelingen binnen equals en hashCode. Genereer bij twijfel methoden met je IDE en controleer ze.

Code: this, equals, hashCode

De demonstratie maakt twee personen met dezelfde inhoud. equals geeft true terug, de hashcodes komen overeen en een HashSet kan het tweede object vinden.

public class Main {
  // Simple Person class to demo this, toString, equals, hashCode
  static class Person {
    private int id;
    private String name;

    // Constructor uses this to set fields
    Person(int id, String name) {
      this.id = id;       // this.id refers to the field
      this.name = name;   // name comes from the parameter
    }

    // Human friendly string
    @Override
    public String toString() {
      return "Person{id=" + id + ", name=" + name + "}";
    }

    // Logical equality: same id and same name
    @Override
    public boolean equals(Object o) {
      if (this == o) return true;                 // same reference
      if (o == null || getClass() != o.getClass()) return false;
      Person other = (Person) o;
      if (this.id != other.id) return false;
      // Compare names safely (null aware)
      if (this.name == null) return other.name == null;
      return this.name.equals(other.name);
    }

    // Hash code consistent with equals
    @Override
    public int hashCode() {
      int result = Integer.hashCode(id);
      result = 31 * result + (name == null ? 0 : name.hashCode());
      return result;
    }
  }

  public static void main(String[] args) {
    // Create two persons with the same content
    Person a = new Person(1, "Ada");
    Person b = new Person(1, "Ada");

    // toString shows readable info
    System.out.println(a);

    // equals compares content, not memory address
    System.out.println("a == b ? " + (a == b));           // false (different objects)
    System.out.println("a.equals(b) ? " + a.equals(b));   // true (same content)

    // hashCode must match for equal objects (useful in hash collections)
    System.out.println("hash(a) = " + a.hashCode());
    System.out.println("hash(b) = " + b.hashCode());

    // Example with HashSet: contains works because equals and hashCode agree
    java.util.Set<Person> set = new java.util.HashSet<>();
    set.add(a);
    System.out.println("set contains b ? " + set.contains(b)); // true
  }
}

Contractcontrole

Korte controle: Als je equals overschrijft, wat moet je dan nog doen en waarom?

Samenvatting

Samenvatting: this verduidelijkt toegang tot velden, toString helpt bij foutopsporing, equals vergelijkt inhoud en hashCode houdt verzamelingen consistent.

Gratis beginnen

Leer Java met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
104
Lessen
374

Veelgestelde vragen

Is de les “this en toString/equals/hashCode” gratis?

Ja — de volledige tekst van “this en toString/equals/hashCode” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Java Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Java Academy bevat in totaal 3 lessen.

Wat leer ik in “this en toString/equals/hashCode”?

Gebruik this om naar het huidige object te verwijzen, schrijf nuttige toString-methoden en implementeer equals en hashCode correct. Je oefent met Java Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Java Academy te beginnen?

Ervaring vooraf is niet nodig. Java Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 3.

Hoe lang duurt de les “this en toString/equals/hashCode”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Java Academy?

Ja. Elke les over Java Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. this en toString/equals/hashCode
  2. Objectcompositie
  3. Een domein modelleren (UML→code)
← Terug naar Java Academy