Menu
Coddy logo textTech

toString() 메서드

Coddy Java 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 87개 중 41번째.

Java의 모든 클래스는 Object 클래스로부터 상속받으며, 이 클래스는 여러 유용한 메서드를 제공합니다. 가장 흔히 오버라이드되는 메서드 중 하나는 객체의 문자열 표현을 반환하는 toString()입니다.

기본적으로, toString()은 클래스 이름 뒤에 객체의 해시 코드가 붙은 값을 반환하며, 이는 그리 유용하지 않습니다:

public class Person {
    private String name;
    private int age;
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

Person p = new Person("Alice", 25);
System.out.println(p);  // Person@15db9742

toString()을 오버라이딩함으로써, 객체의 상태를 설명하는 의미 있는 출력을 제공할 수 있습니다:

public class Person {
    private String name;
    private int age;
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    @Override
    public String toString() {
        return "Person[name=" + name + ", age=" + age + "]";
    }
}

Person p = new Person("Alice", 25);
System.out.println(p);  // Person[name=Alice, age=25]

toString() 메서드는 객체를 출력하거나 문자열과 연결할 때 자동으로 호출됩니다. 이는 추가적인 코드를 작성하지 않고도 객체의 내용을 빠르게 확인할 수 있게 해주어 디버깅을 훨씬 쉽게 만들어 줍니다.

challenge icon

챌린지

쉬움

커스텀 toString() 구현을 사용하여 아이템에 대한 의미 있는 정보를 표시하는 제품 인벤토리 시스템을 구축해 봅시다. 각 제품에 대해 명확하고 읽기 쉬운 표현을 제공하도록 기본 toString() 메서드를 오버라이드하는 Product 클래스를 만들 것입니다.

코드는 두 개의 파일로 구성됩니다:

  • Product.java: 인벤토리 아이템을 나타내는 클래스를 생성합니다. 각 Product는 세 개의 private 필드를 가집니다: name (String), price (double), 그리고 quantity (int). 세 필드를 모두 초기화하는 생성자를 포함하세요. toString() 메서드를 오버라이드하여 Product[name=X, price=Y, quantity=Z]와 같은 정확한 형식의 문자열을 반환하도록 하세요. 여기서 X, Y, Z는 실제 필드 값입니다. 가격은 일반 숫자(특별한 포맷팅 없음)로 표시되어야 합니다.
  • Main.java: 제품을 생성하고 표시하여 Product 클래스를 실제로 작동시켜 보세요. 제품 이름(String), 가격(double), 수량(int)의 세 가지 입력을 받게 됩니다. 이 값들로 Product 객체를 생성한 다음, System.out.println()을 사용하여 제품 객체를 직접 출력하세요. 오버라이드된 toString() 메서드 덕분에, 이해하기 어려운 기본 출력 대신 포맷팅된 제품 정보가 자동으로 표시될 것입니다!

제품 이름(String), 가격(double), 수량(int)의 세 가지 입력을 받게 됩니다.

객체를 직접 출력할 때 toString() 메서드가 자동으로 호출되는 방식에 주목하세요. 이것이 실제 애플리케이션에서 디버깅과 로깅을 훨씬 쉽게 만들어 주는 이유입니다!

치트 시트

Java의 모든 클래스는 Object 클래스에서 상속됩니다. toString() 메서드는 객체의 문자열 표현을 반환합니다.

기본적으로, toString()은 클래스 이름 뒤에 객체의 해시 코드가 붙은 값을 반환합니다:

Person p = new Person("Alice", 25);
System.out.println(p);  // Person@15db9742

의미 있는 출력을 제공하려면 toString()을 재정의(Override)하세요:

@Override
public String toString() {
    return "Person[name=" + name + ", age=" + age + "]";
}

Person p = new Person("Alice", 25);
System.out.println(p);  // Person[name=Alice, age=25]

toString() 메서드는 객체를 출력하거나 문자열과 연결할 때 자동으로 호출됩니다.

직접 해보기

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // 입력값 읽기
        String name = scanner.nextLine();
        double price = scanner.nextDouble();
        int quantity = scanner.nextInt();
        
        // TODO: 입력된 값들로 Product 객체 생성하기
        
        // TODO: product 객체를 직접 출력하기
        // (이것은 자동으로 당신의 toString() 메서드를 호출할 것입니다!)
    }
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

객체 지향 프로그래밍의 모든 레슨