1. Object 클래스의 equals() 메소드를 오버라이딩 한 클래스
1) String 클래스: 객체 내의 문자열이 같은지 판단
2) wrapper 클래스: 객체가 가지고 있는 데이터의 값이 같은지 판단
ex. Integer, Double, Float, Byte, ...
3) Date 클래스: 같은 날짜를 가지고 있는지 판단
4) File 클래스: 같은 경로명을 표현하고 있는지 판단
# equal() 메소드를 오버라이딩한 예
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 32 33 34 35 36 37 38 39 40 | package objectex; import java.io.File; import java.util.Date; public class ObjectTest06 { public static void main(String[] args) { // 1. String String str1 = new String("java"); String str2 = new String("java"); String str3 = new String("python"); System.out.println("str1.equals(str2): " + (str1.equals(str2))); System.out.println("str1.equals(str3): " + (str1.equals(str3))); // 2. wrapper: Integer, Double, Byte, ... Integer i1 = new Integer(10); Integer i2 = new Integer(10); System.out.println("i1.equals(i2): " + (i1.equals(i2))); // 3. Date Date d1 = new Date(); Date d2 = new Date(); System.out.println("d1.equals(d2): " + (d1.equals(d2))); // 4. File File f1 = new File("경로명"); File f2 = new File("경로명"); System.out.println("f1.equals(f2): " + (f1.equals(f2))); } } # 실행 결과 str1.equals(str2): true str1.equals(str3): false i1.equals(i2): true d1.equals(d2): true f1.equals(f2): true | cs |
# 설명
- equals() 메소드는 단순히 값을 비교하는 것이지 주소값을 비교하는 것이 아니다.
예를 들어, str1.equals(str2)는 값이 'java'로 같으므로 반환값이 true가 되는 것이고,
str1 == str2 를 한다면 new 를 통한 객체 생성을 했기 때문에 주소값이 각기 다르게 된다.
따라서 반환값은 false가 나오게 된다.
# Object 클래스의 메소드를 활용한 예시
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | package objectex; class Test {} public class ObjectTest07 { public static void main(String[] args) { Test t = new Test(); System.out.println(t); // 16진수 System.out.println(t.hashCode()); // 10진수 // 체인 시스템 System.out.println(t.getClass().getName() + "@" + Integer.toHexString(t.hashCode())); } } # 실행 결과 objectex.Test@3d012ddd 1023487453 objectex.Test@3d012ddd | cs |
# 설명
Line 9: 객체 t의 주소값을 16진수로 출력한다.
Line 10: 객체 t의 주소값을 10진수로 출력한다.
Line 13: Line 9와 같은 결과값을 나타내기 위해 Object 클래스의 메서드를 활용하여 체인 시스템을 나타낸다.
- getClass(): class objectex.Test
- getClass().getName(): objectex.Test
- Integer.toHexString(t.hashCode()): 10진수로 나타낸 주소값을 16진수로 변환하여 나타낸다.
'JAVA > JAVA2' 카테고리의 다른 글
JAVA2_day06 | 추가공부 (String 클래스의 메소드) (0) | 2018.01.18 |
---|---|
JAVA2_day06 | java.lang.String (0) | 2018.01.18 |
JAVA2_day06 | 다형성 연습문제 (0) | 2018.01.17 |
JAVA2_day05 | instanceof, equals 오버라이딩 연습문제 (0) | 2018.01.17 |
JAVA2_day05 | Up-Casting, Down-Casting, 다형성(Polymorphism) (0) | 2018.01.17 |