3장 - 모든 객체의 공통 메서드

10. equals는 일반 규약을 지켜 재정의하라

11. equals를 재정의하려거든 hashcode도 재정의하라

private final short areaCode, prefix, lineNum;

@Override public int hashCode() {
	int result = Short.hashCode(areaCode);

	// 숫자 31: 홀수이면서 소수. 짝수일 시 오버플로우 발생한 경우 정보 손실
	result = 31 * result + Short.hashCode(prefix);
	result = 31 * result + Short.hashCode(lineNum);
	return result;

	// 한 줄짜리 hashCode 메서드
	// 입력 인수를 위한 배열이 필요하고, 기본 타입이 있다면 박싱, 언박싱의 절차가 필요하므로
	// 속도가 느리다.
	@Override public int hashCode() {
		return Objects.hash(lineNum, prefix, areaCode);
	}
}

12. toString을 항상 재정의하라

13. clone 재정의는 주의해서 진행하라