Equals 메서드

Study/JAVA 2014. 10. 13. 14:40

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

 

Object 클래스에 정의되어 있는 equals 메서드의 실제내용:


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



밑의 소스를 통해 출력을 알아보자

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Equals {
 
    public static void main(String[] args) {
        String str1 = "Korea";
        String str2 = "Korea";
        String str3 = new String("Korea");
 
        System.out.println("String str1=Korea, String str2=Korea, String str3 = new String(Korea)");
        System.out.println("str1==str2: " + "\t\t" + (str1 == str2));
        System.out.println("str1==str3: " + "\t\t" + (str1 == str3));
        System.out.println("str2==str3: " + "\t\t" + (str2 == str3)+"\n");
        
        System.out.println("str1.equals(str2): " + "\t" + str1.equals(str2));
        System.out.println("str1.equals(str3): " + "\t" + str1.equals(str3));
        System.out.println("str2.equals(str3): " + "\t" + str2.equals(str3));
        
    }
}
 




C 에서는 그냥 == 으로 왠만한것들은 비교가 되지만 

자바에서는 객체를 비교할때는equals 라는 함수를 써서 비교를 해주게 됩니다.

보통 String 에서 많이 쓰는데 String 자체를 객체로 인식하기 때문에 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
public class Equals {
 
    public static void main(String[] args) {
        Value str1 = new Value(10);
        Value str2 = new Value(10);
 
        System.out.println("str1==str2: " + "\t\t\t\t" + (str1 == str2));
 
        System.out.println("str1.equals(str2): " + "\t\t\t"
                + str1.equals(str2));
        str2 = str1;
 
        System.out.println("str1==str2: " + "\t\t\t\t" + (str1 == str2));
        System.out.println("str=str1->str1.equals(str2): " + "\t"
                + str1.equals(str2));
    }
}
 
class Value {
    int value;
 
    Value(int value) {
        this.value = value;
    }
}







String str1="Korea", String str2="Korea", String str3=new String("Korea") 3가지를 비교할 때엔

모든 비교결과가 ture가 나왔다 그 이유로 위에서도 써있지만. String 자체를 객체로 인식하기때문


두번째 소스에서 str1, str2 비교(==)과 equals 의 결과값이 false 인 이유는 

참조변수 str1 그리고 str2의 참조하고 있는 인스턴스의 주소값이 다르므로 false 

str2=str1 을 수행하므로서 str1의 참조하는 인스턴스주소를 str2에 저장하므로 ture가 된다.

 




'Study > JAVA' 카테고리의 다른 글

예외발생 log 출력  (0) 2014.10.14
추상클래스 Vs 인터페이스  (0) 2014.10.13
java FILO(2)  (0) 2014.10.13
java FILO(1)  (0) 2014.10.13
Scanner 함수를 이용한 대소문자 변환 소스  (0) 2014.10.13
Posted by 차희빈

차희빈

달력