JAVA

Object Class(equals, toString)

닉넥임 2013. 7. 22. 09:08
반응형


- equals 메소드의 경우 문자열을 비교하기 위해 사용가능하며
또한 문자열이 아닌 객체에 대해서도 사용이 가능하다.
public class Object { 
    public static void main(String[] args) {
        // TODO Auto-generated method stub 
         
        //equals method 
        Circle obj1 = new Circle(5);
        Circle obj2 = new Circle(5);
        // 똑같은 값을 갖는 두 개의 Circle 객체를 생성합니다. 
         
        if(obj1.equals(obj2)) 
            System.out.println("같음"); 
        else 
            System.out.println("다름"); 
        //두 객체를 equals 메소드를 비교하여 결과를 출력합니다. 
    } 
}// end of class 

class Circle { 
    int radius;    //반지름
    Circle (int radius) { 
        this.radius = radius; 
    } 
}// end of class
실행결과 :
 다름
 - 결과가 다른 이유는 두객체를 비교할때 객체의 필드 값이 아니라 참조값을 가지고 비교하기에 메소드를 상속받아 사용하면 똑같은 값을 갖는 객체도 다르다는 결과가 나온다.
 - 의미있는 결과를 리턴하기 원한다면 Object 클래스로 부터 상속받은 equals 메소드를 오버라이드 해야한다.

- 수정된 Circle 클래스
class Circle { 
    int radius; // 반지름 

    Circle(int radius) { 
        this.radius = radius; 
    } 
    public boolean equals(Object obj) {
        if (!(obj instanceof Circle)) 
            return false;
        Circle circle = (Circle) obj; 
        if (radius == circle.radius) 
            return true; 
        else 
            return false;
    } 
}// end of class
이런식으로 오버라이딩 해서 사용해야된다.
하지만 Object 클래스의 equals메소드를 오버라이드 할 때는 hashCode라는 메소드를 같이 오버라이드 해야하기에 이예제는 완벽하지않다.

 



 

 

toString 메소드

: 객체가 가지고 있는 값을 문자열로 만들어서 리턴하는 메소드

public class toString { 

    public static void main(String[] args) {
        GoodsStock obj = new GoodsStock("54651", 100); 
        String str = obj.toString(); 
        System.out.println(str); 
    } 

}// end of class 

class GoodsStock { 
    String goodsCode; // 상품코드 
    int stockNum; // 재고수량 

    public GoodsStock(String goodsCode, int stockNum) {
        this.goodsCode = goodsCode; 
        this.stockNum = stockNum; 
    } 
}//end of class 

실행결과 :

GoodsStock@1ff0dde

- 원하는 실행결과 값으로 받고 싶을시

- Object 클래스로부터 상속받은 toString 메소드를 GoodsStock 클래스에서 오버라이드 해야된다.

- 수정된 GoodsStock

class GoodsStock { 
    String goodsCode; // 상품코드 
    int stockNum; // 재고수량 

    public GoodsStock(String goodsCode, int stockNum) {
        this.goodsCode = goodsCode; 
        this.stockNum = stockNum; 
    } 
    public String toString() { 
        String str = "상품코드 : " +goodsCode+ "재고수량 : " +stockNum; 
        return str; 
    } 
}// end of class
실행결과 : 
상품코드 : 54651 재고수량 : 100

-한빛미디어 뇌를 자극하는 Java 프로그래밍 참조
반응형