-
JAVA μλ° Object ν΄λμ€ equals(), toString()JAVA 2020. 8. 15. 12:17
π― μ€λΈμ νΈ ν΄λμ€μ equals(), toString()λ©μλλ₯Ό μ€λ²λΌμ΄λ©μ ν΅ν΄ μ¬μ©ν΄λ³Έλ€.
Object ν΄λμ€
μ€λΈμ νΈλ λͺ¨λ ν΄λμ€μ μ΅μμ ν΄λμ€μ΄λ€. λͺ μμ μΌλ‘ extendsλ₯Ό μ¬μ©νμ§ μμλ λͺ¨λ ν΄λμ€λ€μ΄ μλμΌλ‘ μμλ°κ³ μλ€. λ°λΌμ λͺ¨λ ν΄λμ€λ μ€λΈμ νΈ ν΄λμ€μ λͺ¨λ λ©μλλ₯Ό μ μΈ μμ΄ μ¬μ©ν μ μμΌλ©° μ€λ²λΌμ΄λ© μ¬μ©λ κ°λ₯νλ€. λν λ€νμ±μ μ μ©νλ©΄ Object νμ μ λ³μλ λͺ¨λ λ°μ΄ν°νμ μ μ μ₯ν μ μλ€.
equals() λ©μλ
κΈ°λ³Έλ°μ΄ν°νμ κ°μ λλ±λΉκ΅ν λ == μ°μ°μλ₯Ό μ¬μ©νκ³ , κ°μ²΄μΈ μΈμ€ν΄μ€ κ°μ λλ±λΉκ΅ν λ equals λ©μλλ₯Ό μ¬μ©νλ€. equals λ©μλλ λ΄λΆμ μΌλ‘ ==μ°μ°μλ‘ κ΅¬νλμ΄ μλ€.
String p = "νκΈΈλ"; String p2 = "νκΈΈλ"; System.out.println(p==p2);
λλ±μ°μ°μ == μ κΈ°λ³Έν λ°μ΄ν°μΌ λ κ°μ κ·Έλλ‘ λΉκ΅νκ³ , μ°Έμ‘°ν λ°μ΄ν°μΌ λ μ°Έμ‘°κ°μ λΉκ΅νλ€. μ°Έμ‘°ν String νμ μ μλ‘ λ€λ₯Έ λ³μ pμ p2λ "νκΈΈλ" μ΄λΌλ λμΌν λ¬Έμμ΄μ μ°Έμ‘°νκ³ μλ€. pμ p2 λ λ€ κ°μ μ£Όμκ°μ λΉκ΅νκ³ μμ΄μ λλ±λΉκ΅ κ²°κ³Όλ trueκ° λλ€.
class Person { String name; int age; public Person() {} public Person(String name, int age) { this.name = name; this.age = age; } }
Person p = new Person("νκΈΈλ",44); Person p2 = new Person("νκΈΈλ",44); System.out.println(p); System.out.println(p2); System.out.println(p.equals(p2)); ----------- obj.Person@5305068a obj.Person@1f32e575 false
μ΄λ²μ Person ν΄λμ€μ κ°μ²΄λ₯Ό μμ±ν΄μ μΈμ€ν΄μ€λΌλ¦¬ equals λ©μλλ‘ λΉκ΅ν΄λ³Έλ€. κ²°κ³Όλ == μ°μ°μλ₯Ό μ¬μ©ν κ²½μ°μ κ°λ€. κ°κ° κ°μ²΄λ₯Ό μμ±νκΈ° λλ¬Έμ p1κ³Ό p2λ μλ‘ λ€λ₯Έ μ£Όμκ°μ μ°Έμ‘°νκ² λλ€. μ£Όμκ°μ λΉκ΅νμ§ μκ³ κ°μ²΄μ λ΄μ©μ μ ννκ² λΉκ΅νλ €λ©΄ μ€λΈμ νΈ ν΄λμ€μ equals λ©μλλ₯Ό μ€λ²λΌμ΄λ© μ¬μ μ ν΄μ μ¬μ©ν΄μΌνλ€.
μ΄ν΄λ¦½μ€ ν΄μ μ¬μ©ν΄ equals λ©μλ μ€λ²λΌμ΄λ© νκΈ°
μ½λ μμμμ μ€λ₯Έμͺ½λ§μ°μ€λ₯Ό ν΄λ¦νκ³ Sourceμμ Generate hashCode() and equals()λ₯Ό μ ννλ©΄ μλμΌλ‘ μ€λ²λΌμ΄λ©μ΄ μμ±λλ€. κ°μ²΄μ λ΄μ©μ μ ννκ² λλ±λΉκ΅νκΈ° μν΄μ equalsλ©μλ λΏλ§ μλλΌ hashCode() λ©μλκΉμ§ νμνλ€.
@Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + age; result = prime * result + ((name == null) ? 0 : name.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Person other = (Person) obj; if (age != other.age) return false; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; return true; }
Person ν΄λμ€μ μλμΌλ‘ μ€λ²λΌμ΄λ© λ λ©μλμ΄λ€. μ΄μ λ€μ p1κ³Ό p2 κ°μ²΄λ₯Ό λΉκ΅ν΄λ³΄λ©΄ μ ννκ² λ΄μ©μ λλ±λΉκ΅ν΄μ trueλ₯Ό λ°ννλ κ²μ νμΈν μ μλ€.
toString() λ©μλ
κ°μ²΄λ₯Ό λ¬Έμμ΄λ‘ λ³κ²½μν€λ λ©μλμ΄λ€. μ°Έμ‘°λ³μκ° μ°Έμ‘°νλ μ€μ λ°μ΄ν°λ₯Ό μ½μμ μΆλ ₯νκΈ° μν΄ toString λ©μλλ₯Ό μ¬μ©νλ€. νλ¦°νΈν λ μ¬μ©νλ print() λ©μλμλ toString()μ΄ λ΄λΆμ μΌλ‘ μ€λ²λΌμ΄λ© λμ΄ μλνΈμΆλλ€. μ΄ λ©μλλ "ν΄λμ€λͺ @16μ§μμμΉκ°" ν¬λ§·μ λ¬Έμμ΄λ‘ λ°ννλλ‘ κ΅¬νλμ΄ μκΈ° λλ¬Έμ μ€μ λ°μ΄ν°λ₯Ό μΆλ ₯νλ €λ©΄ λ°λμ μ€λ²λΌμ΄λ©μ΄ νμνλ€.
@Override public String toString() { return "Person [name=" + name + ", age=" + age + "]"; }
toString() λ©μλλ μ΄ν΄λ¦½μ€ λꡬλ₯Ό μ¬μ©ν΄ μ½κ² μ€λ²λΌμ΄λ©ν μ μλ€. μ½λμμ μ€λ₯Έμͺ½ λ§μ°μ€λ₯Ό ν΄λ¦νκ³ generate toString()μ μ ννλ©΄ μλμΌλ‘ μ€λ²λΌμ΄λ©μ λ§λ€ μ μλ€.
π NEXT : μλ° ν΅μ¬ν΄λμ€ κ³΅λΆνκΈ°
λ°μν'JAVA' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
JAVA μλ° μ μΆλ ₯ I/O, νμΌμ²λ¦¬ (0) 2020.08.17 JAVA μλ° ν΅μ¬ν΄λμ€ (0) 2020.08.16 JAVA μλ° Map 맡 HashMap (0) 2020.08.15 JAVA μλ° Listκ³μ΄ ArrayList (0) 2020.08.13 JAVA μλ° μ»¬λ μ Setκ³μ΄ HashSet (0) 2020.08.12