java.lang 패키지는 자바 프로그래밍에 가장 기본이 되는 클래스들을 포함하고 있는 패키지이다. 이 java.lang 패키지에는 모든 클래스의 최고 조상인 Object 클래스가 있는데, 이번 포스팅에서는 Object 클래스의 메서드 toString()에 대해 알아보자.
1. toString() - 객체 자신의 정보를 문자열로 반환한다.
이 메서드(toString)는 인스턴스에 대한 정보를 문자열(String)로 제공할 목적으로 정의된 함수이다. 인스턴스에 대한 정보는 대부분 인스턴스 변수에 저장된 값들을 말하며, toString()을 통해 문자열로 표현된다.
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
클래스를 작성할 때 toString()을 오버라이딩하지 않는다면, 위와 같은 코드가 그대로 사용될 것이다. 위 코드는 클래스 이름에 16진수 해시코드를 더한 문자열을 반환하는 코드이다.
보통 인스턴스의 변수에 대한 값을 출력하기 위해 toString()을 오버라이딩해서 쓴다. 밑에 코드를 보자.
public class Card {
String kind;
int number;
public Card(String kind, int number) {
this.kind = kind;
this.number = number;
}
@Override
public String toString() {
return "kind: " + this.kind + ", number: " + this.number;
}
}
public class CardToString {
public static void main(String[] args) {
Card c1 = new Card("SPADE", 1);
Card c2 = new Card("HEART", 10);
System.out.println(c1.toString()); // kind: SPADE, number: 1
System.out.println(c2.toString()); // kind: HEART, number: 10
}
}
위 코드처럼 Card 클래스에 toString() 메서드를 오버라이딩 하여 의미 있는 정보를 출력하도록 하였다. @Override는 어노테이션(Annotation)으로 메서드를 오버라이딩하여 정의하겠단 뜻이다. toString()으로 반환하는 문자열은 해시코드가 아닌 멤버변수를 반환하도록 재정의 하였다.
'JavaScript' 카테고리의 다른 글
[Java] 상속 (inheritance)에 대해서 (0) | 2021.09.02 |
---|---|
[Java] 오버로딩(Overloading)과 오버라이딩(Overriding) 차이 (0) | 2021.09.01 |
[JavaScript] 알아두면 유용한 배열(Array) APIs (0) | 2021.08.13 |
[JavaScript] 자바스크립트 메서드 map(), filter(), reduce() 사용 (0) | 2021.08.04 |
[Java] 문자열(String)비교 - 등가 비교 연산자(==)와 equals()의 차이 (0) | 2021.08.03 |