java 프로그래밍 사상: 두 대상의 내용이 같은지 판단

"=="과 equals 방법의 차이


"a==b": (본질은 양측 변수 a, b내의 내용을 비교하는 것이다)
  • a, b가 기본 데이터 유형일 때 a, b에 저장된 것은 구체적인 숫자이기 때문에 비교한 것은 두 수의 구체적인 수치(즉 비교 변수 a, b에 저장된 내용)
  • a, b가 두 대상의 인용일 때 a, b에 저장된 것은 특정한 대상의 주소이기 때문에 대상의 주소
  • 를 비교한다.
    equals 방법:
  • equals 방법은 Object 클래스에 존재하고 모든 클래스의 equals 방법은 Object 클래스에서 계승된다.
  • 기본적인 equals 방법의 밑바닥은'a==b'를 판단하기 때문에 클래스에서 equals 방법을 다시 쓰지 않았을 때 비교한 것도 대상 a, b의 주소
  • 이다.
  • java가 제공하는 모든 클래스에서 절대 다수가 equals 방법을 다시 썼고 equals 방법을 다시 쓴 후에 일반적으로 두 대상의 내용을 비교했다
  • 사용자 정의 클래스의 두 대상의 내용이 같은지 여부를 실현하려면 equals 방법을 자주적으로 다시 써야 한다
  • equals 방법을 다시 쓸 때 보통 hashCode 방법을 다시 쓸 필요가 있다. hashCode 방법의 일반적인 협정을 유지하기 위해 이 협정은 같은 대상이 똑같은 해시 코드를 가지고 있어야 한다.

  • 사용자 정의 클래스의 대상 내용이 같은지 여부

  • equals 방법의 재작성


  • equals를 다시 쓰는 방법은 논리적으로 이름이 같은 두 대상을 같은 대상으로 판정한다
    public boolean equals(Object obj) {
        // instanceof  , obj Name , True
        if(obj instanceof Name){
            Name name=(Name)obj;// obj Name 
            return (firstname.equals(name.firstname))&&(lastname.equals(name.lastname));
            // this.fisrtname name.firstname; 
        }
        return super.equals(obj);
        //obj Name , Object equals , this obj 
    }
    
  • hashCode 방법의 재작성


  • 기본적으로hashCode 방법은 대상의 저장 주소를 비추는 것입니다
    public int hashCode(){
        return firstname.hashCode();
        //firstname , hashCode() , 
    }
    

    좋은 웹페이지 즐겨찾기