[자바/JAVA] Object 클래스 toString() 메서드 활용법

toString()

toString()은 Object 클래스로부터 오버라이딩 해서 사용된다. 일정한 형태의 반환값을 제시할 수 있다. 여러 가지 데이터 타입을 섞을 수도 있다.

 

카드의 종류와 숫자를 구현하는 간단한 예시를 보자.

class Card {
    String kind; // 종류
    int number; // 숫자

    Card(String kind, int number){
        this.kind = kind;
        this.number = number;
    } // 인스턴스 변수 값 초기화 생성자
}

인스턴스 변수 kindnumber를 선언하고 이를 초기화 하는 생성자를 만들었다.

 

이제 메인 메서드를 통해 Card 클래스의 객체를 생성하고 값을 출력 한다.

class CardToString {
    public static void main(String[] args){
        Card c1 = new Card("SPADE", 1); 
        Card c2 = new Card("SPADE", 2);
        Card c3 = new Card("SPADE", 3);
        Card c4 = new Card("SPADE", 4);
        Card c5 = new Card("SPADE", 5);
        // 객체 생성

       System.out.println("Card [kind="+c1.kind+", number="+c1.number+ "]" );
       System.out.println("Card [kind="+c2.kind+", number="+c2.number+ "]" );
       System.out.println("Card [kind="+c3.kind+", number="+c3.number+ "]" );
       System.out.println("Card [kind="+c4.kind+", number="+c4.number+ "]" );
       System.out.println("Card [kind="+c5.kind+", number="+c5.number+ "]" );
    }
}

실행 결과

Card [kind=SPADE, number=1]
Card [kind=SPADE, number=2]
Card [kind=SPADE, number=3]
Card [kind=SPADE, number=4]
Card [kind=SPADE, number=5]

이런 방법으로도 출력이 가능하다. 그렇지만 가독성이 좀 떨어져 보인다. toString() 메서드를 이용하면 좀더 보기가 편한 코드를 구현할 수 있다.

 

Card 클래스에 toString() 메서드를 오버라이딩 해 반환값의 형식을 정해준다.

class Card {
    String kind; // 종류
    int number; // 숫자

    Card(String kind, int number){
        this.kind = kind;
        this.number = number;
    } // 인스턴스 변수 값 초기화 생성자
}
    @Override
    public String toString() {
        return "Card [kind=" + kind + ", number=" + number + "]";
    }

이클립스는 자동 완성 기능도 제공한다.

 

마우스 우클릭 >> Generate toString()

메인메서드에서 호출할 땐 참조변수명.toString() 형태로 해주면 된다.

class CardToString {
    public static void main(String[] args) {
         Card c1 = new Card("SPADE", 1); // 객체 생성
            Card c2 = new Card("SPADE", 2);
            Card c3 = new Card("SPADE", 3);
            Card c4 = new Card("SPADE", 4);
            Card c5 = new Card("SPADE", 5);

           System.out.println(c1.toString());
           System.out.println(c2.toString());
           System.out.println(c3.toString());
           System.out.println(c4.toString());
           System.out.println(c5.toString());
    }
}

간결해졌다.

 

실행 결과는 같다.

Card [kind=SPADE, number=1]
Card [kind=SPADE, number=2]
Card [kind=SPADE, number=3]
Card [kind=SPADE, number=4]
Card [kind=SPADE, number=5]

 

반응형

댓글

Designed by JB FACTORY