Javaのformatメソッドの使い方を徹底的に解説!
  • facebookページ
  • twitterページ
  • 2021.01.01

    Javaのformatメソッドの使い方を徹底的に解説!

    formatメソッド(String.format)の使い方

    この記事では、Javaのformatメソッドについて紹介します!

    formatメソッドは、「書式指定子」を使うことで、引数に指定した値をさまざまな形式に変換できるメソッドです。

    書式指定子には、10進数を表す「%d」や文字を表す「%s」などさまざまなものがあります。

    詳しくは、Javaのリファレンスを確認してみてください。

    Formatter(Java Platform SE 8)

    例えば、数字を3桁で0埋めしたり、日付を任意の形式で整形したりといった場合で活用されます。

    基本的な記述方法は、次の通りです。

    実際に使ってみると、次のように記述できます。

    上記のように、さまざまな書式で表現できているのがわかります。

    文字列をformatメソッドで表現することも可能です。

    このように、formatメソッドで書式を整えられます。

    数値をformatする方法

    ここからは、それぞれのデータ型に合わせたformat方法を紹介します。

    まず、数値をformatするクラスとして、Javaには以下の2つが用意されています。

    1. NumberFormatクラス
    2. DecimalFormatクラス

    これらのクラスを使うことで、カンマ区切りで数値を表現したり、0埋めしたりなどの場合に便利です。

    それぞれ使い方を見ていきましょう。

    NumberFormatクラス

    NumberFormatクラスには、次のメソッドが用意されています。

    メソッド 詳細
    getNumberInstance() カンマ区切り形式
    getCurrencyInstance() 通貨形式
    getPercentInstance() パーセント形式
    getInstance() デフォルト形式(getNumberInstanceと同じ)

    それぞれ使って確認してみましょう。

    次のように記述できます。

    それぞれ、メソッド内容に合わせた表示形式になっているのがわかります。

    DecimalFormatクラス

    DecimalFormatクラスは、独自でフォーマットパターンを指定したいときに使えるクラスです。

    そのため、NumberFormatクラスのようにメソッドの用意はありません。

    フォーマットを決めるパターン文字として、次のものが用意されています。

    パターン文字 詳細
    0 数値1桁を表し、該当桁に数値が存在しない場合は”0″を表示
    # 数値1桁を表し、該当桁に数値が存在しない場合はブランク
    . 小数点を表示
    , カンマを表示
    マイナスを表示
    % 数値を100倍してパーセント表示

    それぞれを使ってみると、次のように記述できます。

    このように、それぞれ指定した書式になっているのがわかります!

    doubleをformatする方法

    doubleをformatする場合は、書式指定子を使って表現できます。

    使える書式指定子は、次の通りです。

    書式指定子 詳細
    e、E 浮動小数点数形式の10進数
    f 10進小数点数

    では、実際に記述して確認してみましょう。

    次のように記述できます。

    日付をformatする方法

    日付をformatするには、「DateTimeFormatterクラス」が使えます。

    DateTimeFormatterのオブジェクトを生成するのに「ofPatternメソッド」を使い、引数に日付のフォーマットを設定可能です。

    例えば、次のように記述できます。

    LocalDateTimeクラスを使うことで、現在の日時を取得します。

    取得した日時を「yyyy/MM/dd HH:mm:ss」の形で出力しましょう。

    実行すると、次のように出力できました。

     

    また、書式指定子でも表現可能です。

    書式指定子 詳細
    H 時間(00~23)
    I 時間(01~12)
    k 時間(0~23)
    l 時間(1~12)
    M 分(00~59)
    S 秒(00~60)
    ※60はうるう秒が必要な場合の特殊な値
    L ミリ秒(000~999)
    N ナノ秒(000000000~ 999999999)
    p 「am」または「pm」を表示
    s 1970年1月1日からの秒数
    Q 1970年1月1日からのミリ秒
    B 月の英名(January や February など)
    b 月の英名の略語表記(Jan や Feb など)
    a 曜日の英名(Sunday や Monday など)
    C 4桁の年を100で割った数値(00~99)
    Y 年(2020 や 2019 など)
    y 年の下2桁(20 や 19 など)
    j 年の経過日数
    m 月(01~12)
    d 日にち(01~31)
    e 日にち(1~31)

    こちらも、現在の日時を表示してみます。

    DateTimeFormatterクラスと同じ書式で表示できました!

    formatでカンマ区切り

    数値をカンマ区切りで表示する場合は、先述した3種類の方法を使って表現可能です。

    1. 書式指定子「%,d」を使う
    2. NumberFormatクラスを使う
    3. DecimalFormatクラスを使う

     

    上記のように、どの方法を使っても3桁目でカンマ区切りを表現できます!

    formatで0埋めをする

    数値を0埋めしたい場合は、書式指定子を使うか、DecimalFormatクラスを使いましょう。

    formatで空白埋め

    文字列を空白埋めするには、書式指定子を使って次のように記述できます。

    「%」の後ろに空白を含めた数を指定すればOKです。

    また、「-」を追加することで右側に空白を入れられます。

    実行結果は次の通りです。



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

    この記事をシェア

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









    ABOUT US

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

    READ MORE