Deo zbornika Učimo Javu
Ispitivanje jednakosti objekata
Operatori <, >, <= i >= mogu se primijeniti jedino na brojeve i znakove. Ne mogu se koristiti sa drugim tipovima.
Poređenje po referenci
Ako pokušate da poredite dva identična teksta pomoću jednakosti ==, rezultat neće biti ono što očekujete:
class JaCitam {
  public static void main(String args[]) {
    String s1 = new String("Ja čitam.");
    String s2 = new String("Ja čitam.");
    if (s1 == s2) {
      System.out.println("Strune su jednake.");
    }
    else if (s1 != s2) {
      System.out.println("Strune nisu jednake.");
    }
  }
}
Vidjet ćete da je rezultat:
Strune nisu jednake.
Poređenje po vrijednosti
Da bismo uspoređivali strune ili objekte bilo koje druge vrste, koristimo se metodom equals iz paketa java.lang.String. Pogledajmo ispravnu verziju programa koja će raditi onako kako očekujemo:
class JaCitam {
  public static void main(String args[]) {
    String s1 = new String("Ja čitam.");
    String s2 = new String("Ja čitam.");
    if (s1.equals(s2)) {
      System.out.println("Strune su jednake.");
    }
    else {
      System.out.println("Strune nisu jednake.");
    }
  }
}
U konzoli:
% javac JaCitam.java
% java JaCitam
Strune su jednake.
Razlozi za ovo sežu prilično duboko u filozofiju Jave i prirodu objekata, ali ukratko, u pitanju su dve različite fizičke kopije, koje imaju isti sadržaj. Prvi način ispituje jel isti primerak objekta u pitanju, a drugi jel isti sadržaj.
Izvor: Elliotte Rusty Harold, Java Lecture Notes, preveo Draško Budin, priredio Damjan Pavlica.