MENU

printfメソッド

はじめに 

これまでは println() や print() を使用していました。 
これらは単純に値を出力するためのメソッドでしたね。 
}しかし、printf() メソッドを使用すれば出力する文字などに様々な装飾を施すことが可能です。

Step1: printf() 

文字へ装飾を施すためには指定子というものを記述する必要があります。 
簡単にいうと「文字の好きな部分をちょっとだけ変える記号」です。 
指定子は多くの種類が存在するため、順を追って少しずつ見ていきましょう。 
(頻出するものを抜粋しています) 

【型を指定する書式指定子】 

【その他の書式指定子】 

このように値の形式そのものを変更する 記号を書式指定子と呼びます。 
具体的な使用例を見てみましょう。 

例) int型整数「12345」を8進数表記に変更したい場合 
まず、 下記変数 

を準備します。 

このint型変数mathの中身 「12345」 を8進数に変換してみましょう。 

【出力結果】 

整数「12345」が8進数表記に変換され、「30071」 と出力されました。 
続けてもうひとつ例を見ていきましょう。 

例) int型整数「1」の前に0を付けたい場合 (0詰めして表示したい場合) 

先ほどの例と同じように、変数 

を準備し、「1」を「01」 に変換してみましょう。 

この記述を使用すれば、 
・1月~12月を表示(ただし1~9は0詰めして表示させる) 
といった要件にも簡単に対応することが可能です。 

【サンプルコード】 

【出力結果】 

“%02” と指定したので1〜9は0詰めで表示されましたが、 10〜12は0詰めされずにそのまま表示されました。 
もし “%03” と記述すれば、 出力結果は以下のようになります。 

“%03” は第二引数を3文字で出力するため、 3文字に満たない場合は不足分を0詰めされて上記のような結果となります。 
この性質を覚えておくと、指定子の理解がグッと深まるでしょう。 

Step2: System.out.printf()による日時の出力 

printlf()の指定子を用いることで、 日時データのフォーマットを変換して出力することが可能です。 
下記の表は、よく日時データの変換に用いられる指定子を抜粋したものです。

これらの指定子を用いれば、 取得した現在時刻を私たちが普段目にするフォーマットへ変換するといったことも簡単に行えます。 

まず、現在時刻を取得します。 

Date型変数「Date」 の出力結果 

※2019/03/06日時点の出力内容になります。 

では、取得した現在時刻の形式を「年月日(曜日)午前or午後〇〇時〇〇分」 に変換してみましょう。 

この printf()内では、下記の指定子が記述されているので要チェックです。 

【出力結果: printf()で 「date」のフォーマットを変換した場合】 

日時の形式は現場によって千差万別なので、 前章で学んだ SimpleDateFormat・DateTimeFormatterと併せて覚えておくと、業務を行う上で必ず役に立ちます。 

まとめ 

現場での業務において、 値の形式を変更したいケースに遭遇することは非常に多いです。 
前回学んだ simpleDateFormat と併せて覚えておくと、様々な要件へ柔軟に対応できるようになるので今のうちにしっかりと学習しておくと良いでしょう。 

目次