プログラムでは数値の書式設定が必要になる場合があることは誰もが知っていますが、数値の書式設定とは何でしょうか?いわゆるデジタルフォーマットとは、指定されたフォーマットに従って文字列を取得することです。
たとえば、3.141592 を小数点以下 2 桁まで保持したい場合、結果の書式設定された文字列は 3.14 になるはずです。整数 123456789 を「千」ごとにグループ化したい場合、結果の書式設定された文字列は 123,456,789 になるはずです。小数点以下 3 桁を保持するには数値 12.3456 を使用し、整数部分は少なくとも 3 桁を表示する必要があり、取得される書式設定された文字列は 012.346 になります。
JDK 1.5 より前のプログラムでは、数値データをフォーマットするには、 DecimalFormat クラスなどの java.text パッケージ内の関連クラスを使用する必要がありました。 JDK 1.5 バージョンでは、より便利なFormatter クラスが提供されます。Formatter クラスは、C 言語の printf 関数に似たフォーマット メソッドを提供します。
format (フォーマットモード、値リスト)
このメソッドは、「書式設定モード」に従って「値のリスト」の文字列表現を返します。
現在、Java では format メソッドが String クラスの静的メソッドになっているため、プログラムは String クラスを直接使用して format メソッドを呼び出して数値をフォーマットできます。
format メソッドにおける「フォーマットモード」は、ダブルクォートで囲まれた文字列、つまり文字列です。この文字列内の文字は、フォーマット文字と通常の文字で構成されます。
例: 出力結果 %d、%f、%d の %d と %f は、最初の 4 つの漢字と中間の 2 つのカンマは通常の文字であることに注意してください。書式記号は通常の文字とみなされます。学生は、Java API の java.util.Formatter クラスを参照して、書式文字について詳しく学ぶことができます。 format メソッドによって返される文字列は、「フォーマット モード」のフォーマット文字が、取得したフォーマットされた結果で置き換えられた後の文字列です。次に例を示します。
Strings=String.format(%.2f,3.141592);
%.2f で 3.141592 をフォーマットした結果は 3.14 であるため、s は 3.14 になります。
format メソッドの「値のリスト」は、変数、定数、または式のカンマ区切りのリストです。フォーマットメソッドの「フォーマットモード」のフォーマット文字数が、「値リスト」にリストされている値の数と同じであることを確認してください。次に例を示します。
Strings=String.format(%d元%0.3fkg%d台,123,456.777888,999);
すると、sは123元、456.778キロ、999単位となります。
デフォルトでは、書式設定メソッドは、「書式設定モード」の書式文字を左から右の順に使用して、「値リスト」内の対応する値を書式設定しますが、「書式設定モード」の通常の文字は変更されません。たとえば、int 型を想定すると、変数 x と double 変数 y の値はそれぞれ 123 と 3.1415926 になります。
Strings=String.format(左から右へ:%d,%.3f,%d,x,y,100);
次に、s は左から右に、123,3.142,100 となります。
書式設定にデフォルトの順序 (左から右) を使用したくない場合は、書式文字の前にインデックス記号を追加することもできます:index$。たとえば、1$ は「値リストの最初の順序」を意味します。 ", 2$ は、リスト内の "値" 2 を意味します:
Strings=String.format(左から右ではありません:%2$.3f,%3$d,%1$d,x,y,100);
この場合、s は左から右ではなく、3.142,100,123 となります。
注: 「書式設定モード」に通常の % を含める場合は、コードを記述するときに 2 つの % を連続して入力する必要があります。次に例を示します。
Strings=String.format(%d%%,89);
すると、sは89%になります。