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の使い方を理解しよう!


    ポテパンが提供するサービスについて

    本メディア「ポテパンスタイル」を運営する株式会社ポテパンは、エンジニアキャリア領域で複数サービスを提供しています。

    ポテパンフリーランス

    ポテパンフリーランス

    フリーランスエンジニアの方に高単価案件をご紹介しております。弊社ではフリーランス案件を常時300件ほど保有しており、その中からあなたに適した案件をご案内いたします。また、これから独立してフリーランスになる方の無料個別相談も承っております。フリーランスになった後の案件獲得方法やお金面(税金や保険など)についてお答えいたします!フリーエンジニアになりたい方向けのコンテンツも盛りだくさんです。

    ポテパンキャリア

    ポテパンキャリア

    エンジニア職専門の転職エージェントです。ポテパンキャリアでは、技術のわかるエージェントがあなたの転職をサポートします。エージェント自身がエンジニアなので、あなたと同じ目線で仕事内容や今後のキャリアについて一緒に考えることができます。年収800万円以上のハイスペック転職をご希望の方は「ポテパンプロフェッショナル」もご用意しておりますのでご利用下さいませ。

    ポテパンキャンプ

    ポテパンキャンプ

    ポテパンキャンプでは、RubyにてゼロからオリジナルのECサイトを作り上げてる3ヶ月間の実践型カリキュラムを提供しております。すでに本スクールの卒業生は、エンジニア職として様々な企業様に就職しております。なお、本スクールは受講料25万円と他社スクールに比べ格安となっており、またポテパンからご紹介させていただいた企業へ就職が決まった場合は、全額キャッシュバックいたします。



    株式会社ポテパンは、企業とエンジニアの最適なマッチングを追求しています。気になるサービスがあれば、ぜひ覗いてみてください!

    ポテクラバナー ポテプロバナー

    この記事をシェア

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









    ABOUT US

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

    READ MORE

    ポテパンおすすめ案件