매개변수로 객체의 참조변수를 받아서 비교하여 그 결과를 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 |