Javaでは、指定した値を任意の書式でコンソール画面に出力したい場合「printf」メソッドが利用出来ます。
本記事では、Java初心者向けに「printf」メソッドの基本的な使い方をサンプルコードを掲載しながら紹介していきます。
目次
printfメソッドとは
pringfメソッドは、Javaにデフォルトで用意されている関数で、コンソールへ任意の書式に変換して値を出力したい場合に利用されます。
書式で指定する例としては、桁数指定やゼロ埋め・日付指定など多岐に渡ります。
基本的な使い方
printfメソッドの基本となる構文は下記のように記述します。
System.out.printf(書式, 引数1[, 引数2, ...]);
指定した書式に引数で指定した引数が設定されて出力されます。
具体例を確認した方が分かりやすいのでサンプルを確認してみましょう。
サンプル
書式に指定した文章に引数の文字を代入して出力するサンプルです。
System.out.printf("%sさんこんにちは!", "テスト");
実行結果
テストさんこんにちは!
「%s」の部分に引数で指定した「テスト」が代入されるため、最終的に上記のような出力結果となります。
この「%s」のような指定方法をフォーマット指定子と呼びます。
フォーマット指定子を確認
フォーマット指定子は種類も多いので、まずはデータ型に関する指定方法をいくつかピックアップしてご紹介していきます。
- %: フォーマット指定子の開始
- d: 10進数で出力
- s: 文字列で出力
- f: 小数点を出力
- b: 真偽値を出力
各種フォーマット指定子を試してみよう
上記でご紹介したデータ型のフォーマット指定子でいくつか出力方式の異なるサンプルを確認してみましょう。
各種フォーマット指定子を出力
まずは上述した4つのフォーマット指定子を出力してみます。
System.out.printf("%s\n", "あいう"); System.out.printf("%d\n", 123); System.out.printf("%f\n", 12.3); System.out.printf("%b\n", true);
出力結果
あいう 123 12.300000 true
フォーマット指定子と異なる引数を指定した場合
フォーマット指定子で設定した書式に引数の値が変換出来ない場合はエラーとなるので注意しましょう。
下記のような指定はエラーとなります。
System.out.printf("%d", 1.2); System.out.printf("%f", 1);
「%s」に対して「1」のような整数を指定したり、「%b」に対して文字列を指定してもエラーにはならないので、色々なパターンを試してみてください。
また下記のようにフォーマット指定子の数と引数の数が合わない場合もエラーとなります。
System.out.printf("%s%d", "テスト");
反対に引数が多すぎる場合はエラーになりません。
System.out.printf("%s", "テスト", 1);
最小桁数を指定
最小桁数を指定したい場合「%桁数s(データ型)」を指定します。
2桁の文字列をprintfメソッドを使って5桁の文字列として出力したい場合は次のように記述します。
System.out.printf("%5s", "あい");
実行結果
あい
引数として設定した文字列を最小桁数として指定した5桁になるように出力します。
足りない桁数の部分は前方が空白で埋められています。
最小桁数以上の場合
引数が最小桁数以上の場合は、下記の通り引数に指定した値がそのまま出力されます。
System.out.printf("%5s", "あいうえおかき");
実行結果
あいうえおかき
左詰め
最小桁数を指定した上で左詰めで出力したい場合「%-桁数s(データ型)」を指定します。
上記サンプルを左詰めで出力する場合次のように記述します。
System.out.printf("%-5s", "あい");
実行結果
あい
実行結果では分かりづらいですが、最小桁数に足りない場合、末尾に空白が埋められた状態で出力されます。
0埋め
同じように2桁の数値を最小桁数5桁に指定して0埋めで出力したい場合は次のように記述します。
System.out.printf("%05d", 25);
出力結果
00025
「%」の後ろに指定した「0」が0埋めを意味しています。
最大幅指定
5桁の数値を最大幅3桁で出力すると指定したい場合は次のように記述します。
System.out.printf("%.3s", "あいうえお");
出力結果
あいう
「%」の後ろに「.」を記述することで直後の数値が最大幅の値となります。
小数の桁数指定
小数点以下の桁数を指定して出力する場合には「%.桁数f」を指定して次のように記述します。
System.out.printf("%.2f", 123.4567);
実行結果
123.46
小数点以下の指定した桁数までが表示されるため、サンプルの場合小数第3位が四捨五入されます。
改行
2つの引数で指定した文字列を出力し、途中に改行を入れたい場合は次のように記述します。
System.out.printf("%s%n%s", "あいうえお", "かきくけこ");
出力結果
あいうえお かきくけこ
「%」の後ろに「n」を記述することで指定した部分で改行が行われます。
日付に関するフォーマット指定子を確認
日付指定はprintfメソッドでもよく利用される処理の1つです。
「年月日」「時分秒」をそれぞれ出力する方法を確認しておきましょう。
年月日を出力
年月日を出力する場合は「%tF」を指定して、次のように記述します。
System.out.printf("%tF", new Date());
実行結果
2021-02-07
- tY: 年(4桁 ex:2021)
- ty: 年(2桁 ex:21)
- tm: 月(2桁 ex:02)
- td: 日(2桁 ex:07)
時分秒を出力
時分秒を出力する場合は%「tT」を指定して、次のように記述します。
System.out.printf("%tT", new Date());
実行結果
03:14:40
- tH: 時(24時間 ex:15)
- tI: 年(12時間 ex:03)
- tM: 分(2桁 ex:09)
- tS: 秒(2桁 ex:05)
printメソッド・printlnメソッドとの違い
printfと同じコンソール出力用のメソッドとして「print」と「println」が挙げられます。
それぞれの違いについて簡単にご紹介しておきます。
printメソッドとの違い
printメソッドでは書式の指定が出来ず、引数に指定した値をそのままコンソールに出力します。
System.out.print("テスト"); System.out.print("出力");
実行結果
テスト出力
printlnメソッドとの違い
printlnでは引数に指定した値を出力するのはprintメソッドと同じですが、出力した値の最後に改行コードが付与される点で異なります。
System.out.println("テスト"); System.out.println("出力");
出力結果
テスト 出力
さいごに: printfメソッドを使って任意の書式で出力処理を実行しよう
本記事では、printfメソッドを使って任意の書式でコンソール出力する方法についてご紹介してきました。
printfメソッドでの画面出力処理は、デバッグ時などに結果を見やすくするために利用されます。
フォーマット指定子はたくさん用意されていますが、頻繁に利用するものは限られてきますので、実際に自分で動かしてみて少しずつ使えるパターンを増やしていきましょう。
フォーマット指定子の後ろに記述した「\n」は改行コードで、出力結果を確認しやすくするために指定しています。