- toString()을 사용한것과 사용하지 않은것은 결과값 비교
class Book {
private String title;
private String author;
public Book(String title, String author) {
this.title = title;
this.author = author;
}
}
public class BookTest {
public static void main(String[] args) {
Book book = new Book("데미안", "헤르만 헤세");
System.out.println(book);
String str = new String("test");
System.out.println(str.toString());
}
}
- 이때 첫번째 **
println(book)
**에서는 아래와 같은 결과값이 표시된다.
- ch01
(패키지명)
.Book(클래스명)
@36aa7bc2(인스턴스 메모리의 위치: 16진수의 가상 메모리 주소)
- 두번째로 str.toString()으로 실행한 값은 아래와 같은 결과값이 표시된다.
test
→ 위의 값처럼 주소가 나온것이 아니라 String값이 출력된다.
- 이제 Book 클래스 내부에 toString()을 만들어 주자
class Book {
private String title;
private String author;
public Book(String title, String author) {
this.title = title;
this.author = author;
}
@Override
public String toString() {
return title + "," + author;
}
}
public class BookTest {
public static void main(String[] args) {
Book book = new Book("데미안", "헤르만 헤세");
System.out.println(book);
String str = new String("test");
System.out.println(str.toString());
}
}
- 위의 코드처럼 Book 클래스 안에 toString()메소드를 오버라이딩 해서 만들어주면 결과값은 주소값을 표시하던것이 이렇게 바뀐다.
이게 바로 toString()을 사용하는 이유이다.