JAVA
[Java] toString()
kimyongjun0129
2025. 4. 18. 20:46
toSting()
객체(Object) 정보를 문자열(String)로 반환할 때 사용하는 메서드이다.
- Object 클래스에 toString() 메서드가 기본적으로 정의되어 있다.
- 모든 클래스는 Object 클래스를 상속받으므로, toString() 메서드를 사용할 수 있다.
public class Person { // extends Object 생략
String name;
public Person(String name) {
this.name = name;
}
@Override
public String toString() {
return "Person name: " + name;
}
}
toString() 특징
1. 객체의 정보를 확인할 수 있다.
Object 클래스에 정의된 toString() 메서드를 보면, toString() 메서드는 클래스 정보와 참조 값(16진수)을 문자열로 반환한다.
package practice;
public class Main {
public static void main(String[] args) {
Person person = new Person("Yong Jun");
System.out.println(person.toString());
}
}
Object 클래스에 정의된 toString() 메서드를 출력해보자.
※ println() 메서드는 내부에서 전달 받은 파라미터의 toString() 메서드를 호출하기 때문에 person.toString()이 아닌 person(객체)만 넣어도 객체의 정보를 받을 수 있다. (System.out.println(person) == System.out.println(person.toString())
다음과 같이 객체의 정보를 받을 수 있다.
- practice : 패키지 이름
- Person : 클래스 이름
- 23fc625 : 16진수 참조값
2. 오버라이딩을 통해 재정의 할 수 있다.
더보기
Main
public class Main {
public static void main(String[] args) {
Person person = new Person("Yong Jun");
System.out.println(person.toString());
}
}
Person
public class Person { // extends Object 생략
String name;
public Person(String name) {
this.name = name;
}
@Override
public String toString() {
return "Person name: " + name;
}
}
클래스는 기본적으로 Object를 상속받기 때문에 Object의 메서드인 toString() 오버라이딩 할 수 있다.
오버라이드한 경우 참조값 출력
더보기
Main
public class Main {
public static void main(String[] args) {
Person person = new Person("Yong Jun");
System.out.println(person.toString());
String refValue = Integer.toHexString(System.identityHashCode(person));
System.out.println("refValue = " + refValue);
}
}
Person
public class Person { // extends Object 생략
String name;
public Person(String name) {
this.name = name;
}
@Override
public String toString() {
return "Person name: " + name;
}
}
객체의 참조값을 가져오는 기능인 toString() 메서드를 오버라이드하여 사용한 경우, 더이상 참조값을 가져오지 못하게 된다.
그때 다음과 같은 코드를 사용하면, 객체의 참조값을 가져올 수 있다.
- Integer.toHexString(System.identityHashCode(객체)) : 객체의 참조값을 16진수 정수로 반환받을 수 있다.