【5分で理解】JavaのString.formatの使い方まとめ

みなさんJavaのString.formatメソッドを使っていますか?

とても便利なメソッドだと思いますが

基本的な書式を忘れてしまう
カンマ区切りの数値を扱うにはどうしたらいいのか
先頭から0で埋めた数値はどうやれば実現できるのか
String.formatで16進数を扱うにはどうしたらいいの?

といった声にお答えするのが本記事です!

この記事ではString.formatの使い方をわかりやすくご説明します。

String.formatの基本的な使い方

概要

JavaにはString.formatというメソッドがあります。このメソッドは引数に指定した文字列(書式)を元にルールに沿った文字列を返すというメソッドになります。

少し難しく感じてしまいますよね。早速コードを見てみましょう。

実行結果

いかがでしょうか。どんな動きをするかが少しわかりましたか?

String.formatの第一引数は決められたルール(書式)に従って書く必要があります。そして第二引数以降は第一引数で決めた書式に割り当てるための変数を順番に渡していきます。

書式書式と書いていますがわかりやすく言ってしまえば「%~」と書いてある部分です。この部分を第二引数以降で指定した値に置き換えることができるよ、というのがString.formatになります。

数値を扱う場合は第一引数の文字列の中で「%d」と書きます。では文字列や真偽値、小数などを扱いたい場合はどうすればいいでしょうか。

次の項目で順番に見ていきましょう。

真偽値の扱い(%b)

真偽値(Javaではtrueかfalseを指す)を扱いたい場合は「%b」を使いましょう。

コード

上記の変数strを表示した結果

文字列の扱い(%s)

文字列(複数の文字の集まりを文字列という)を扱いたい場合は「%s」を使いましょう。

コード

上記の変数strを表示した結果

文字の扱い(%c)

先程は文字列の例でしたが今度は文字を扱いたい場合の例です。ちなみに文字は文字列と違います。文字列は複数の文字の集まりの事をいいますが文字は1文字(厳密に言うと1バイト)の事を文字といいます。

この文字を扱うには「%c」を使いましょう。

コード

上記の変数strを表示した結果

浮動小数点(%f)

浮動小数点(小数の事)を扱いたい場合は「%f」を使うことで表現できます。

コード

上記の変数strを表示した結果

日時(%tXX)

日時について扱いたい場合ですがこれは年、月、日などによって指定する書式が違います。

種類が多いため表にしてみます。

パラメータ名内容
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)
pamもしくはpmの表示
s1970年1月1日からの秒
Q1970年1月1日からのミリ秒
BJanuaryやFebruary等の月の英名
b上記の略語表記
JanやFeb等
a曜日の英名:Sunday,Monday等
C4桁の年を100で割った数値(00~99)
Y
y年の下二桁
j年の何日目か
m月(01~13)
d月の何日目か(01~31)
e月の何日目か(1~31)

使い方としては、

このように%t~という形で上記の表のアルファベットと組み合わせて使います。

上記の例では現在の時間と分を表示しているコードになります。

数値を加工して出力する

カンマ区切り

金額等を表す際に3桁区切りでカンマが入りますよね?あの数値をString.formatを使うことで簡単に実現することができます。

コード

変数strを表示した結果

カンマで区切りたい場合は,を%の後につけることで実現できます。

,の後ろの3dについては「数値で三桁ごと」にという意味になります。

8進数

8進数を表現したい場合は「%o」を使います。8進数って何?と思われた方は下記のサイトがお役に立つかと思います!

2進数、16進数と10進数

我々が普段使っているのは10進数になります。
(10進数は9の次、10で桁があがる。8進数の場合は7の次で桁が上がり10になる。)

コード

変数strを表示した結果

16進数を扱いたい

先程は8進数を扱いましたが今度は16進数の場合です。16進数の場合は「%x」を扱うことで表現できます。

コード

変数strを表示した結果

数値の先頭を何かで埋めたい場合

0で埋める場合

「00001」のように先頭に0をで埋めたい場合は以下のようにします。

コード

変数strを表示した結果

このようになります。
もしこれが「12345」のような5桁数値の場合は頭に0で埋められることはありません。

0で埋められるケースとしては「%~d」で指定した桁数に満たない数値は足りない桁分0で埋められることになります。

空白で埋める場合

今度は0ではなく空白を入れたい場合はどうなるのでしょうか。

先頭に空白を入れる

コード

変数strを表示した結果

後ろに空白を入れる

コード

変数strを表示した結果

空白を入れたい場合は、「%[桁数][型]」といった形で実現できます。

ただ、この方法は先頭から空白で埋めるので後ろ側に空白を入れたい場合は「%-[桁数][型]」という書き方をすることで実現できます!

まとめ

ではまとめます。

String.formatを使うことで書式にそった形で文字列を変換して返すというメソッドであることがわかりました。

このメソッドは数値や文字列を置き換えるだけでなくコンマ区切りにしたり、数値や文字にスペースを挿入したりと様々な使い方が可能です。

とても便利なので覚えておくとよいでしょう。忘れてしまった場合はこの記事を思い出して振り返りましょう!

Javaカリキュラム無料公開中!

この記事はJava入門完全攻略ガイド【基礎学習/アプリ開発/仕事獲得】の一部になります。このカリキュラムは、プログラミング入門者が、基礎学習からアプリ開発、さらには仕事獲得まで体系的に学べる内容となっています。

Java学習に必要な情報を一つにまとめていますので効率よくJavaを学ぶことが出来ます。この機会に是非活用していただければと思います。

Java入門からアプリ開発まで未経験者が知っておくべき基礎を総ざらい
更新日 : 2019年5月22日

最短でJavaを習得したい方へ

もし、あなたが、

「難しすぎて学習が全然進まない」
「学習量が膨大でゴールが見えない」
「エラーを解決するのに何日もかかってしまう」

など、プログラミング学習やキャリアに関してお困りであれば、まずは『無料体験レッスン』にお申し込み下さい。

あなたにとって、最適の解決策をご提案させていただきます。

詳しくは下の画像から詳しいサービス内容をご確認ください。

cta_bannar-java2
LINEで送る
Pocket

書いた人

オータケ

オータケ

30歳、フリーランスプログラマ。中学の頃よりプログラミングに興味を持ちゲーム開発やWebサイト構築などを経験
新しいフレームワークやライブラリに興味があり革新的な機能が含まれていると泣いて喜ぶ。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説