ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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μ§„μˆ˜μœ„μΉ˜κ°’" 포맷의 λ¬Έμžμ—΄λ‘œ λ°˜ν™˜ν•˜λ„λ‘ κ΅¬ν˜„λ˜μ–΄ 있기 λ•Œλ¬Έμ— μ‹€μ œ 데이터λ₯Ό 좜λ ₯ν•˜λ €λ©΄ λ°˜λ“œμ‹œ μ˜€λ²„λΌμ΄λ”©μ΄ ν•„μš”ν•˜λ‹€. 

     

    generate toString

     

    	@Override
    	public String toString() {
    		return "Person [name=" + name + ", age=" + age + "]";
    	}

    toString() λ©”μ†Œλ“œλ„ 이클립슀 도ꡬλ₯Ό μ‚¬μš©ν•΄ μ‰½κ²Œ μ˜€λ²„λΌμ΄λ”©ν•  수 μžˆλ‹€. μ½”λ“œμ—μ„œ 였λ₯Έμͺ½ 마우슀λ₯Ό ν΄λ¦­ν•˜κ³  generate toString()을 μ„ νƒν•˜λ©΄ μžλ™μœΌλ‘œ μ˜€λ²„λΌμ΄λ”©μ„ λ§Œλ“€ 수 μžˆλ‹€.

     

     

     

    😜 NEXT : μžλ°” ν•΅μ‹¬ν΄λž˜μŠ€ κ³΅λΆ€ν•˜κΈ°

    λ°˜μ‘ν˜•

    λŒ“κΈ€

κ°œλ°œκ³΅λΆ€