Menu
Coddy logo textTech

toString() メソッド

CoddyのJavaジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 41/87。

Java のすべての class は、いくつかの便利な method を提供する Object class を継承します。最も一般的に Override される method の 1 つが toString() で、object の文字列表現を返します。

デフォルトでは、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()実装を使用して、itemsに関する意味のある情報を表示するproduct inventory systemを構築しましょう。各productを明確で読みやすく表現できるよう、デフォルトのtoString() methodをOverrideするProduct classを作成します。

コードを2つのファイルに分けて整理します。

  • Product.java:inventory itemを表すclassをCreateします。各Productには3つのprivate fieldsがあります:name(String)、price(double)、quantity(int)。3つすべてのfieldsをinitializesするconstructorを含めます。toString() methodをOverrideし、次のexact formatのformatted stringをreturnします:Product[name=X, price=Y, quantity=Z]。ここでX、Y、Zはactual field valuesです。priceはplain numberとして表示されます(特別なformatは不要です)。
  • Main.java:Product classをCreateして表示することで、実際に動作させます。3つのinputsを受け取ります:product name(String)、price(double)、quantity(int)。これらのvaluesを使用してProductをCreateし、その後System.out.println()を使用してproduct objectをdirectly Printします。OverrideしたtoString() methodのおかげで、crypticなデフォルト出力ではなく、formatted product informationがautomatically表示されます。

3つのinputsを受け取ります:product name(String)、price(double)、quantity(int)。

objectをdirectly Printすると、toString() methodがautomatically callされることに注目してください。これにより、実際のapplicationsでのdebuggingやloggingがはるかに簡単になります。

自分で試してみよう

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腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

オブジェクト指向プログラミングのすべてのレッスン

自分で練習してみよう: Javaオンラインコンパイラ