Java에서 "=="와 equals () 의 차이점 이해

1879 단어 Java==equals()
Java의 "=="와 equals () 의 차이점
관계 조작부호'=='에 대해 에서 이렇게 묘사했다. "관계 조작부호는 boolean 결과를 생성하고 조작수의 값 간의 관계를 계산한다."이곳의 조작 수의'값'은 우리가 주의할 만하다.8가지 기본 데이터 형식(boolean,byte,char,short,int,float,double,long)에 대한 변수는 바로'값'이다.따라서 기본 데이터 유형의 변수를 "=="로 비교할 때 실제로 비교되는 값은 변수에 저장된 값입니다. 예를 들어 다음과 같습니다.

public static void main(String[] args) {
    int a = 5, b = 5;
    System.out.println(a == b);
  }
프로그램이 출력합니다:true.그런데 아래 코드는요?

public static void main(String[] args) {
    Integer c = new Integer(5), d = new Integer(5);
    System.out.println(c == d);
  }
우리는 프로그램을 실행했는데, 출력을 발견한 것은:false입니다.이는 Integer가 Java의 기본 데이터 형식이 아니기 때문에 그 변수 c, d는 Java에서 대상을 가리키는 인용이라고 불리며 저장된'값'은 대상이 메모리에 있는 주소이지 값'5'자체가 아니다.따라서 c와 d가 실제 저장된 것은 각각 두 개의 값 모두'5'인 Integer 대상의 주소이다. 이 두 대상은 같은 메모리 공간에 있지 않고'=='를 비교한 결과는false이다.
그럼 equals () 방법은 무엇입니까?equals()는 기본 Object에서 정의하는 방법으로, Object 클래스에서 equals() 방법은 다음과 같이 정의됩니다.

public boolean equals(Object obj) {
    return (this == obj);
  }
이것은 "=="와 같습니다.사실, equals () 방법의 의미는 다시 쓰는 데 있다. 그렇지 않으면 equals () 에 대한 호출은 의미가 없다.예를 들어, Object에서 상속된 Integer 클래스는 equals() 메서드를 다시 작성합니다.

public boolean equals(Object obj) {
    if (obj instanceof Integer) {
      return value == ((Integer)obj).intValue();
    }
    return false;
  }
이 방법의 의미는 value 값을 비교하는 것입니다. 만약에 우리가 같은 value 값을 가진 두 Integer 대상에 대해 equals()를 호출하여 비교한다면

public static void main(String[] args) {
    Integer c = new Integer(5), d = new Integer(5);
    System.out.println(c.equals(d));
  }
결과는true입니다.
읽어주셔서 감사합니다. 여러분에게 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!

좋은 웹페이지 즐겨찾기