Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ メソッド toString() | クラス
Javaクラスとコアメカニクス

bookメソッド toString()

メニューを表示するにはスワイプしてください

オブジェクトを簡単に出力する方法

Javaで System.out.println(object); コマンドを使用してオブジェクトのすべてのデータを表示するには、toString(); というメソッドがある。

toString()

Javaの toString メソッドは、Object クラスに属する組み込みメソッド。オブジェクトの文字列表現を返すために使用される。デフォルトでは、オブジェクトで toString を呼び出すと、クラス名ハッシュコード が含まれる文字列が返される。 例を見てみよう:

Main.java

Main.java

copy
1234567891011121314151617181920
package com.example; class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } } public class Main { public static void main(String[] args) { Person bob = new Person("Bob", 20, "male"); System.out.println(bob); } }

ハッシュコード

ハッシュコード とは、簡単に言うと、メモリ上に格納されているオブジェクトの一意の識別子。オブジェクトに対して hashCode() メソッドを呼び出すことで、ハッシュコードを確認することもできる。例:

Main.java

Main.java

copy
123456789101112131415161718192021
package com.example; class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } } public class Main { public static void main(String[] args) { Person bob = new Person("Bob", 20, "male"); int code = bob.hashCode(); System.out.println(code); } }

この場合、疑問が生じます:オブジェクトのハッシュコードの代わりに、より具体的な情報を取得するにはどうすればよいでしょうか?そのような場合には、toString() メソッドをオーバーライドすることができます。

継承メソッドのオーバーライドは広範なトピックであり、別のコースで学習します。現時点では、toString() メソッドに対してのみメソッドのオーバーライドを使用します。

toString() の使い方

メソッドをオーバーライドするには、次の構文を使用します:

Main.java

Main.java

copy
1234
@Override public String toString() { // block of code }

このメソッドの前にアノテーション @Override を使用。アノテーションにより、コンパイラはこのメソッドがオーバーライドされていることを認識。次に、public String toString() という構文を指定し、どのメソッドをオーバーライドするかを明示。

このメソッドの本体では、オブジェクトを文字列としてどのように表現するかを定義。Person クラスのメソッドをオーバーライドする例:

Person.java

Person.java

copy
12345678910111213141516171819
class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } @Override public String toString() { return "Class Person;" + System.lineSeparator() + "name = " + name + ";" + System.lineSeparator() + "age = " + age + ";" + System.lineSeparator() + "gender = " + gender + "."; } }

System.lineSeparator() コマンドは改行を作成するために使用。 文字列とその値を連結することで、オブジェクトの表示方法を定義。したがって、Person クラスのオブジェクトを出力しようとすると、各フィールドの詳細情報が表示。 main メソッドを使ってオブジェクトを出力し、どのように表示されるかを確認:

Main.java

Main.java

copy
12345678910111213141516171819202122232425262728
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob", 20, "male"); System.out.println(bob); } } class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } @Override public String toString() { return "Class Person;" + System.lineSeparator() + "name = " + name + ";" + System.lineSeparator() + "age = " + age + ";" + System.lineSeparator() + "gender = " + gender + "."; } }

オブジェクト bob が属するクラスの情報と、そのすべてのフィールドの詳細を取得しました。 このように、オブジェクトを出力する際に希望する情報を表示できるよう、toString() メソッドをオーバーライドして定義できます。コンストラクタを使ってこのクラスの別のオブジェクトを作成し、toString() メソッドがオブジェクトをどのように変換するかを確認しましょう。

Main.java

Main.java

copy
123456789101112131415161718192021222324252627282930
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob", 20, "male"); System.out.println(bob); Person alice = new Person("Alice", 17, "female"); System.out.println(alice); } } class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } @Override public String toString() { return "Class Person;" + System.lineSeparator() + "name = " + name + ";" + System.lineSeparator() + "age = " + age + ";" + System.lineSeparator() + "gender = " + gender + "." + System.lineSeparator(); } }

新しいオブジェクト alice がコンソールに同じテンプレートで表示されていることが確認できます。

結論

toString() メソッドを使用することで、オブジェクト情報の画面表示が大幅に簡素化され、mainメソッド内のスペースを節約できます。

1. なぜ toString() メソッドが必要なのですか?

2. toString() メソッドの上に付けるべきアノテーションはどれですか?

question mark

なぜ toString() メソッドが必要なのですか?

正しい答えを選んでください

question mark

toString() メソッドの上に付けるべきアノテーションはどれですか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 4.  8

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 4.  8
some-alt