ch12 : Object

λͺ©μ°¨

Object

  • λͺ¨λ“  ν΄λž˜μŠ€λŠ” Object 클래슀λ₯Ό μƒμ†λ°›λŠ”λ‹€.

  • 즉, λͺ¨λ“  ν΄λž˜μŠ€λŠ” Object ν΄λ ˆμŠ€μ— μžˆλŠ” λ©”μ„œλ“œλ“€μ„ μ‚¬μš© κ°€λŠ₯함 (toString, equals, hashCode λ“±)

  • 주둜 μ‚¬μš©ν•˜λŠ” λ©”μ†Œλ“œλŠ” toString, equals, hashCode이고, ν•„μš”μ‹œ μ˜€λ²„λΌμ΄λ”©ν•˜μ—¬ μ‚¬μš©ν•œλ‹€.

참고둜 μžλ°”λŠ” 닀쀑 상속을 받을 μˆ˜λŠ” μ—†μ§€λ§Œ, μ—¬λŸ¬ λ‹¨κ³„λ‘œ 상속 받을 μˆ˜λŠ” μžˆλ‹€. (μ˜ˆμ‹œ. Obect β†’ Parent β†’ Child)

toString

  • μ–΄λ–€ 객체인지 λ‚˜νƒ€λ‚Ό 수 μžˆλ‹€.

  • toString()이 μžλ™μœΌλ‘œ ν˜ΈμΆœλ˜λŠ” 경우

    1. System.out.println()

    2. 객체(String을 μ œμ™Έ)에 λ”ν•˜κΈ° μ—°μ‚°ν•˜λŠ” 경우

  • toString() λ‚΄λΆ€

    System.out.println(obj); // μžλ™ obj.toString() 호좜!
    System.out.println(obj.toString());
    
    // κΈ°λ³Έ toString() λ‚΄λΆ€
    getClass().getName() + '@' + Integer.toHexString(hashcode());
    // 좜λ ₯
    // νŒ¨ν‚€μ§€,클래슀λͺ… + '@' + 객체의 ν•΄μ‹œμ½”λ“œ
  • μ˜€λ²„λΌμ΄λ”©

    • DTO ν΄λž˜μŠ€μ—μ„œ λ‚΄λΆ€ ν•„λ“œ 데이터λ₯Ό ν™•μΈν•˜κ³  싢을 경우, μ˜€λ²„λΌμ΄λ”©ν•˜μ—¬ μ‚¬μš©ν•  것 β†’ IDE ν™œμš©ν•΄μ„œ μ˜€λ²„λΌμ΄λ”©ν•˜λ©΄ 간단!

    public clas DTO {
    	// μ˜€λ²„λΌμ΄λ”©
    	public String toString() {
    			return "name = " + name + "phone" + phone;
    	}
    }

equals

  • μ°Έμ‘°μžλ£Œν˜•μ˜ 값비ꡐ

    • == : μ£Όμ†Œκ°’μ„ 비ꡐ함.

    • equals() : μ˜€λ²„λΌμ΄λ”©ν•΄μ„œ 객체의 κ°’ 비ꡐ할 수 있음.

      μ˜€λ²„λΌμ΄λ”© μ•ˆν•˜λ©΄ 기본적으둜 hashCode()κ°’(객체의 μ£Όμ†Œκ°’)을 λΉ„κ΅ν•˜κΈ°μ—, 두 클래슀의 μΈμŠ€ν„΄μŠ€λ³€μˆ˜κ°€ 같아도 λ‹€λ₯΄λ‹€κ³  λ‚˜μ˜΄!

단, equals() μ˜€λ²„λΌμ΄λ”©ν•  λ•Œ, hashCode()도 같이 μ˜€λ²„λΌμ΄λ”© ν•΄μ€˜μ•Όν•œλ‹€.

hashCode

  • 객체의 λ©”λͺ¨λ¦¬ μ£Όμ†Œλ₯Ό λ¦¬ν„΄ν•œλ‹€. (16μ§„μˆ˜)

equals(), hashCode() μ˜€λ²„λΌμ΄λ”©μ€ 툴의 μžλ™μ™„μ„±μ„ μ΄μš©ν•  것!

Last updated