이전 걸음에서는 상속에 관한 명령문인 super에 대해서 공부를 했습니다. 이번 걸음과 다음 걸음에서는 알아두면 좋은 명령어를 공부를 하도록 하겠습니다. super만큼 사용 빈도가 많은 예약어를 이번 걸음에서 같이 공부를 하도록 하겠습니다.
이번 걸음에서 공부할 예약어는 equals입니다. equals는 비교를 해서 같은지 다른지 대해서 true또는 false를 반환해서 분기를 하여 원하는 동작이 되도록 하는 조건 입니다. 이번 걸음에서 equalse에 대해 공부를 하겠습니다.
equals 무엇 인지와 문자열에 사용하는 equals와 객체에 사용되는 equals의 차이점을 설명을 할 예정입니다. 마지막으로 equals예제 소스를 구현해서 결과를 보고 어떻게 사용을 하면 되는지 이번 글을 통해서 함께 보도록 하겠습니다.
equals 란?
equals는 문자열의 문자열 값이 같은지 비교를 하거나 객체가 같은 객체를 참조를 하고 있는지 알고 싶을 때 equals를 사용해서 확인을 하게 됩니다. 위에서 보면 RC카가 있습니다. A사람과 B사람이 같은 RC카를 가지고 있는 경우 만약 A와 B가 가지고 있는 RC카 객체가 같은지 확인을 한다면 Java에서 equals를 사용해서 비교를 하면 됩니다.
A.RC카.equls(B.RC카) 이렇게 조건을 확인 하면 당연히 true가 반환 되어서 원하는 명령이 동작이 되도록 하면 됩니다.
equals 문자열 VS 객체
equals의 문자열 비교 같은 경우에는 입력 받은 문자열 변수에 equals를 사용하여 입력한 문자열이 이게 맞는지 분기를 할 때 많이 사용을 하게 됩니다.
예를 들어
String str = “안녕”;
str.equals(“안녕”); => 이렇게 하면 true가 반환이 됩니다. str값도 안녕이고 비교에 대한 값도 안녕이기 때문입니다.
위와 같이 문자열 같은 경우에는 안에 문자열 데이터만 같으면 true를 반환 합니다.
객체를 비교하는 equals를 사용을 하면 객체가 똑같지 않으면 false가 됩니다. 아무리 같은 class를 통해 객체가 만들어져도 false가 반환이 됩니다.
예를들어
A a = new A();
A a1 = new A();
a.equals(a1); => 이렇게 하면 false가 반환이 됩니다. 아무리 class가 같지만 객체가 다르기 때문에 false를 반환이 됩니다.
위와 같이 객체를 비교하면 객체까지 똑같아야 true를 반환 합니다.
equals 예제 소스
package Test;
class C{
}
public class Test1 {
public static void main(String[] args) {
String str = "안녕";
String str1 = "안녕";
System.out.println(str.equals(str1));
String str2 = new String("하이");
String str3 = new String("하이");
System.out.println(str2.equals(str3));
C c1 = new C();
C c2 = new C();
System.out.println(c1.equals(c2));
C c3 = new C();
C c4 = c3;
System.out.println(c3.equals(c4));
}
}