JavaのtoStringメソッドとは?便利な使い方を解説!
  • facebookページ
  • twitterページ
  • 2019.11.28

    JavaのtoStringメソッドとは?便利な使い方を解説!

    toStringメソッドとは

    Javaでは、すべてのクラスに、toString()メソッドが用意されています。

    toStringメソッドは、数値型などを文字列に変換するときなどに使用します。それ以外にも、オブジェクトの中身を文字列表現として取得でき、デバッグで確認するときなども活用します。

    この記事では、toStringメソッドの使い方や、toStringメソッドをオーバライドして、独自の処理を組み込む方法などを紹介します。

    数値を文字列に変換する

    toStringメソッドで数値を文字列に変換する方法を解説します。

    単純にintやlongなどの数値を文字列に変換する場合は、Integer.toString()もしくはLong.toString()メソッドを使用して、数値を文字列に変換できます。

    書式を指定して数値を文字列に変換する

    toStringメソッドは、カンマ区切りや、パーセント表記などの書式指定ができません。書式を指定する場合は、NumberFormatクラスを使用します。

    ▪️ 実行結果

    文字列を数値に変換する

    上の例とは逆に、文字列を数値に変換するには、各数値型のvalueOfメソッドを使用します。

    次のサンプルコードでは、文字列をInteger型に変換しています。

    便利なtoStringメソッドの使い方

    数値から文字列への変換以外にも、toStringメソッドを使用して、クラスのインスタンスを、文字列表現で取得できます。

    Eclipse(統合開発環境)などのデバッグ環境が使えない場合に有用な方法です。

    Mapの中身を確認する

    MapのtoStringメソッドを使って、Mapに格納されている要素の文字列情報を取得することができます。

    ▪️ 実行結果

    System.out.printlnは、文字列以外のオブジェクトを渡すと、暗黙的にtoStringメソッドが呼び出されるため、以下のように書くこともできます。

    Listの中身を確認する

    Mapクラスと同様に、ListもtoStringメソッドで、要素の文字列情報を取得できます。

    ▪️ 実行結果

    自作クラスでtoStringメソッドを使う

    独自に作成した自作クラスでtoStringメソッドを実装する方法を解説します。

    まず、次のサンプルコードのような、名前(name)と年齢(age)のプロパティを持つ独自クラスを作成しましょう。

    上記で作成した独自クラスのインスタンスを作成して、toStringメソッドを呼び出してみましょう。

    ▪️ 実行結果

    実行結果を見てもわかる通り、toStringメソッドを呼び出すと、謎の文字列が表示されるだけで、クラスのプロパティに何が入っているのか確認できません。

    ポテパンダの一言メモ

    上の実行結果で「User@2a139a55」と表示された謎の数字は、インスタンスのアドレスを示す数値です。アドレスはnewする度に、毎回新しく発番され、各インスタンスのメモリ上の位置を管理しています。

    独自クラスでtoStringメソッドが呼びされたとき、プロパティの設定内容など、クラスのインスタンス表現を文字列で返したい場合は、toStringメソッドをオーバーライドします。

    次のサンプルコードは、上で作成して独自クラスにtoStringメソッドをオーバーライドした例です。

    プロパティの内容を文字列連結して返しています。

    では早速、toStringメソッドをオーバーライドしたクラスで、もう一度、toStringメソッドを呼んでみましょう。

    ▪️ 実行結果

    先程オーバーライドしたtoStringメソッドが呼び出され、プロパティの設定内容がコンソールに出力されていると思います。

    このように、自作クラスにtoStringメソッドをオーバーライドしておくと、デバッグできない環境であっても、容易にオブジェクトの内容が確認でます。

    「@Override」は必須ではないけど付けよう

    前述したサンプルコードの、toStringメソッドに「@Override」アノテーションが付いているのに気付いた人もいると思います。

    「@Override」は、メソッドがオーバーライドされている事を示すアノテーションですが、実は必須ではなく、付けなくても問題なくオーバーライドされます。

    ただし、「@Override」アノテーションは、一般的には付けた方が良いと言われています。

    その理由は、「@Override」を付けると、オーバーライドするメソッド名や、引数の数や型が一致しない時、コンパイルの時点でエラーになってくれる為です。

    ■ コンパイル結果

    「@Override」が無いと、オーバーライドするメソッドの綴りを間違えもコンパイルエラーは発生しない為、気付かずリリースしてしまうと、実行時に意図しない動きになる恐れがあります。

    toStringを活用しよう

    JavaのtoStringメソッドで数値を文字列に変換する方法や、オーバーライドの話にも触れて、toStringメソッドを解説してきました。

    クラスの継承や、メソッドのオーバーライドについてもっと知りたい方は、以下の記事も参考にしてみてください。

    【関連記事】
    【初心者歓迎】クラスの継承とは?Javaのextendsの使い方を理解しよう!



    優良フリーランス案件多数掲載中!
    フリーランスエンジニアの案件をお探しなら
    ポテパンフリーランス

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE