0Pricing
Java Academy · Pelajaran

this dan toString/equals/hashCode

Gunakan this untuk merujuk objek saat ini, tulis toString yang informatif, dan implementasikan equals serta hashCode dengan benar.

this dan toString/equals/hashCode adalah pelajaran Java Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 3. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Java Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Java Academy mencakup 3 pelajaran total.

Kata kunci this

this merujuk pada objek saat ini. Gunakan untuk mengakses atribut atau memanggil konstruktor lain. Kata kunci ini membantu ketika nama parameter sama dengan nama atribut sehingga maksud Anda menjadi jelas.

toString yang mudah dibaca

toString() mengembalikan ringkasan objek yang mudah dipahami manusia. Timpa metode ini untuk menampilkan atribut penting seperti pengenal dan nama. Ini membuat catatan dan keluaran penelusuran jauh lebih mudah dipahami.

equals dibandingkan ==

equals memeriksa kesamaan logis, sedangkan == memeriksa apakah dua referensi menunjuk ke objek yang sama. Sebagian besar kelas domain sebaiknya menimpa equals untuk membandingkan isi, bukan alamat memori.

hashCode sesuai dengan equals

hashCode harus konsisten dengan equals: jika a.equals(b) bernilai benar, maka a.hashCode() harus sama dengan b.hashCode(). Aturan ini diperlukan agar HashSet dan HashMap bekerja dengan benar.

Kiat dan jebakan

Pilih atribut yang stabil untuk kesamaan, seperti pengenal atau alamat surel, dan buat toString tetap singkat. Hindari penggunaan koleksi yang dapat diubah di dalam equals dan hashCode. Jika ragu, buat metode dengan lingkungan pengembangan Anda lalu tinjau hasilnya.

Kode: this, equals, hashCode

Demo ini membuat dua objek Person dengan isi yang sama. equals mengembalikan nilai benar, kode hash cocok, dan HashSet dapat menemukan objek kedua.

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
  }
}

Pemeriksaan kontrak

Pemeriksaan singkat: Jika Anda menimpa equals, apa lagi yang harus dilakukan dan mengapa?

Ringkasan

Ringkasan: this memperjelas akses atribut, toString membantu penelusuran kesalahan, equals membandingkan isi, dan hashCode menjaga koleksi tetap konsisten.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “this dan toString/equals/hashCode” gratis?

Ya — teks lengkap “this dan toString/equals/hashCode” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Java Academy, upgrade ke CoddyKit PRO. Kursus Java Academy mencakup 3 pelajaran total.

Apa yang akan aku pelajari di “this dan toString/equals/hashCode”?

Gunakan this untuk merujuk objek saat ini, tulis toString yang informatif, dan implementasikan equals serta hashCode dengan benar. Kamu berlatih Java Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Java Academy?

Tidak diperlukan pengalaman sebelumnya. Java Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 3.

Berapa lama pelajaran “this dan toString/equals/hashCode” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Java Academy ini?

Ya. Setiap pelajaran Java Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. this dan toString/equals/hashCode
  2. Komposisi Objek
  3. Pemodelan Domain (UML→Kode)
← Kembali ke Java Academy