JavaA2Z

KAB-studio > プログラミング > JavaA2Z > toStringとは

toString

日本語 文字列化
英語 to string
ふりがな とぅーすとりんぐ、つーすとりんぐ
フリガナ トゥーストリング、ツーストリング

解説

インスタンスの「文字列表現」を返すメソッド
 
インスタンスの内部に格納されたデータも含めて文字列化し、Stringクラス戻り値として返すメソッド
引数なし、戻り値Stringクラス

この戻り値文字列にはインスタンスの「概要」が書かれていることになり、インスタンスについて簡単に情報を得ることができる、便利なメソッドである。
 
toString()メソッドは多くの場面で呼び出される。
たとえば、println()メソッドは渡されたインスタンスのtoString()メソッド呼び出し、返された文字列を出力する。

また、Eclipse等の開発環境でデバッグ時に変数を見ようとすると、その変数クラス参照変数の場合にはtoString()メソッドが呼び出され、返された文字列がウィンドウに表示される。
toString()メソッドのおかげでインスタンス内の状態を簡単に知ることができ、デバッグ時には非常に役立つメソッドである。
 
toString()メソッドObjectクラスメソッドである。すべてのクラスObjectクラスサブクラスだから、すべてのクラスがtoString()メソッドを持つことになる。
ただし、ObjectクラスのtoString()メソッドは、「クラス名@ハッシュ値」というあまり役に立たない情報しか返さない。
J2SEの多くのクラスは、ObjectクラスのtoString()メソッドオーバーライドし、内部情報を出力する。
自分で作成したクラスに「toString()メソッドで内部情報を出力する」機能を持たせる場合、ObjectクラスのtoString()メソッドオーバーライドし、フィールド等の「インスタンスの情報」を文字列化し、戻り値として返せばよい。

その際、返す文字列の書式は決まっていない。自由に決めてよい。
それは逆に言えば、返される文字列の書式がバージョンアップ等で変更される可能性が高いということである。書式が決まってない以上、たとえば「toString()メソッド戻り値パースして、見ることができないフィールドの情報を取得する」といった使い方は避けた方がいい。
toString()メソッド戻り値はあくまで人間が目視で確認するためのものである。IntegerクラスのtoString()メソッドのような「出力書式が仕様で決められている」ものは別として、通常はデバッグ時の参考くらいにとどめておいた方がいいだろう。

(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        // クラスはすべてtoString()メソッドを持ちます。
        Integer integer = new Integer( 100 );
        String integerString = integer.toString();
        System.out.println( integerString );
        // 100

        // println()メソッドにクラスの参照型変数を渡すと、
        // 中でtoString()メソッドを呼び出して、返された
        // 文字列を出力します。
        Integer integer2 = new Integer( 200 );
        System.out.println( integer2 );
        // 200

        // toString()メソッドはObjectクラスのメソッドなので、
        // すべてのクラスがtoString()メソッドを持つことになります。
        // そのtoString()メソッドを呼び出してみます。
        HasNotToStringClass hasNot = new HasNotToStringClass();
        String hasNotString = hasNot.toString();
        System.out.println( hasNotString );
        // HasNotToStringClass@1d7ad1c

        // このようにObjectクラスのtoString()メソッドは
        // 「クラス名@ハッシュ値」を出力するので、詳しい情報
        // が分かりません。

        // toString()メソッドをオーバーライドすれば、
        // ポリモーフィズムが働くのでそちらが呼ばれます。
        HasToStringClass hasToString = new HasToStringClass();
        String hasToStringString = hasToString.toString();
        System.out.println( hasToStringString );
        // HasToStringClass[i:100]

        // デバッグの時に便利なので、自分で作ったクラスには
        // toString()メソッドを持たせるようにしましょう。
        // Eclipseであれば右クリックメニューの
        // 「ソース」→「toString() の生成」でフィールドから
        // 自動生成できます。
    }
}

/**
 * ObjectクラスのtoString()メソッドを
 * オーバーライドしないクラス。
 */
class HasNotToStringClass
{
    public int i = 100;

    // toString()メソッドをオーバーライドしてないので、
    // ObjectクラスのtoString()メソッドが呼ばれます。
}

/**
 * ObjectクラスのtoString()メソッドを
 * オーバーライドしたクラス。
 */
class HasToStringClass
{
    public int i = 100;

    /**
     * Object#toString()をオーバーライドします。
     */
    public String toString()
    {
        // 返す文字列の書式は決まっていません。
        // 好きなように、インスタンスの状態が分かりやすい
        // 文字列を返せばいいでしょう。
        // ここでは、フィールドであるiの中身を出力します。
        return "HasToStringClass[i:" + i + "]";
    }
}
// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        // クラスはすべてtoString()メソッドを持ちます。
        Integer integer = new Integer( 100 );
        String integerString = integer.toString();
        System.out.println( integerString );
        // 100

        // println()メソッドにクラスの参照型変数を渡すと、
        // 中でtoString()メソッドを呼び出して、返された
        // 文字列を出力します。
        Integer integer2 = new Integer( 200 );
        System.out.println( integer2 );
        // 200

        // toString()メソッドはObjectクラスのメソッドなので、
        // すべてのクラスがtoString()メソッドを持つことになります。
        // そのtoString()メソッドを呼び出してみます。
        HasNotToStringClass hasNot = new HasNotToStringClass();
        String hasNotString = hasNot.toString();
        System.out.println( hasNotString );
        // HasNotToStringClass@1d7ad1c

        // このようにObjectクラスのtoString()メソッドは
        // 「クラス名@ハッシュ値」を出力するので、詳しい情報
        // が分かりません。

        // toString()メソッドをオーバーライドすれば、
        // ポリモーフィズムが働くのでそちらが呼ばれます。
        HasToStringClass hasToString = new HasToStringClass();
        String hasToStringString = hasToString.toString();
        System.out.println( hasToStringString );
        // HasToStringClass[i:100]

        // デバッグの時に便利なので、自分で作ったクラスには
        // toString()メソッドを持たせるようにしましょう。
        // Eclipseであれば右クリックメニューの
        // 「ソース」→「toString() の生成」でフィールドから
        // 自動生成できます。
    }
}

/**
 * ObjectクラスのtoString()メソッドを
 * オーバーライドしないクラス。
 */
class HasNotToStringClass
{
    public int i = 100;

    // toString()メソッドをオーバーライドしてないので、
    // ObjectクラスのtoString()メソッドが呼ばれます。
}

/**
 * ObjectクラスのtoString()メソッドを
 * オーバーライドしたクラス。
 */
class HasToStringClass
{
    public int i = 100;

    /**
     * Object#toString()をオーバーライドします。
     */
    public String toString()
    {
        // 返す文字列の書式は決まっていません。
        // 好きなように、インスタンスの状態が分かりやすい
        // 文字列を返せばいいでしょう。
        // ここでは、フィールドであるiの中身を出力します。
        return "HasToStringClass[i:" + i + "]";
    }
}

この単語を含むページ

「みだし」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2010/03/10
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。