본문 바로가기

Language & Framework/Java

자바 Object 클래스의 기본 메서드(2) toString()

 

 

 

처음 배워서 좋다고 배열에 사용해보면 외계어를 보여주며 우리를 당황시키는 toString이다.

toString의 기본 형태는 아래와 같다.

 

    public String toString() {
        return getClass().getName()+"@"+Integer.toHexString(hashCode());
    }

 

띠용.. toString은 기본적으로 클래스 이름과 16진수의 해시코드를 리턴하는 메서드이다.

equals 메서드가 그랬듯이 String 클래스에는 오버라이드 되어 있었기 때문에 괴상한 코드가 아니라 문자열이 반환된 것이다.

우리도 종종 toString으로 객체의 값이나 기타 원하는 것들을 반환하고 싶을 때가 있을 것이다.

그러면 그냥 오버라이드하면 된다.

 

class Student {
    String name;
    int age;
    Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return  "name : " + this.name + ", age : " + this.age; }
}

 

이제 Student 클래스를 가진 객체에 toString()메서드를 사용하면 "name : " name ", age : " age "를 문자열로 반환하게 오버라이드했다.

결과를 확인해보자.

 

public class ToString {
    public static void main (String[] args) {
        Student kim = new Student("킴", 17);
        System.out.println(kim);
    }
}

// name : 킴, age : 17

 

이제 알수 없는 해시코드가 아니라 친숙한 글자가 반환되고 있는 것을 확인할 수 있다.