ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] equals 메서드
    Java/기타 2019. 9. 29. 11:11
    반응형

    equals 메서드란?

    매개변수로 객체의 참조변수를 받아서 비교하여 그 결과를 boolean 값으로 알려 주는 역할을 합니다.

     

    1
    2
    3
    public boolean equals(Object obj) {
        return (this == obj)
     
    cs

     

    위의 코드에서 알 수 있듯이 두 객체의 같고 다름을 참조변수의 값으로 판단합니다.

     

    equals 객체 비교시 주의사항

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    public class EqualsEx1 {
     
        public static void main(String[] args) {
     
            Member m1 = new Member("홍길동");
            Member m2 = new Member("홍길동");
     
            if (m1.equals(m2)) {
                System.out.println("m1과 m2는 같습니다.");
            } else {
                System.out.println("m1과 m2는 다릅니다.");
            }
     
            m2 = m1;
     
            if (m1.equals(m2)) {
                System.out.println("m1과 m2는 같습니다.");
            } else {
                System.out.println("m1과 m2는 다릅니다.");
            }
        }
    }
     
    class Member {
     
        String name;
     
        Member(String name) {
            this.name = name;
        }
    }
     
    cs

     

     equals 메서드는 주소값으로 비교를 하기 때문에, 두 Member 인스턴스의 멤버변수 name의 값이 "홍길동"으로 같을지라도 equals 메서드로 비교한 결과는 false가 응답됩니다. m2=m1을 수행한 후에는 참조변수 m2는 m1을 참조하고 있는 인스턴스의 주소값이 저장되므로 m2도 m1에 같은 주소값이 저장됩니다. 그래서 m2=m1을 수행한 후에는 true가 응답됩니다.

     

    equals 문자열 비교시 주의사항

    1. 변수.equals(비교문자열)

     변수.equals(비교문자열)의 형태로 객체를 비교하면 변수에 null이 들어오면 Exception이 발생합니다. 변수가 주체가 되어 객체를 비교합니다.

     

    2. 비교문자열.equals(변수)

     비교문자열.equals(변수)의 형태로 객체를 비교하면 변수에 null이 들어와도 Exception이 발생하지 않고 false를 응답합니다. 비교문자열이 주체가 되어 객체를 비교합니다.

    반응형

    댓글

Designed by Tistory.