본문 바로가기

JAVA

[Java] toString()

 

 

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진수 정수로 반환받을 수 있다.

'JAVA' 카테고리의 다른 글

[Java] Lv_3 계산기 문제  (0) 2025.04.22
[Java] 다이아몬드 상속  (0) 2025.04.19
[Java] Lv_2 계산기 프로젝트  (0) 2025.04.18
[Java] Lv_1 계산기 프로젝트  (0) 2025.04.17
[Java] 스트림(Stream)  (0) 2025.04.17