https://www.sejuku.net/blog/wp-content/themes/voice_child/images/samurai_logo.png 侍エンジニア塾が運営するプログラミング入門者向け学習情報サイト

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

オータケ
書いた人 オータケ


侍エンジニア塾ブログは、未経験からWebアプリ開発と仕事獲得をサポートする
侍エンジニア塾のオウンドメディアです。
プログラミング学習を覗き見

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

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

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

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

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

【体験談】あなたは大丈夫?学習効率をなめて痛い目をみた話

突然ですが、あなたは学習効率をなめていませんか?

まず、私が実際にやってしまったプログラミング学習の失敗体験を聞いてください。

どの言語学習にも当てはまる失敗パターンだった・・・

私は、ある程度の目的と目標を持ってJava言語の独学で勉強していました。
使ったものは、

  • 学習書籍
  • 無料学習サイト

この2つでした。

「Java」を勉強しようと思った理由は、Javaが一番有名でスタンダードだったからです。

しかし、なかなか学習が進まない中、恐ろしいことに気づきました。
そもそもJavaで何が作れるのかうまく把握していないことに気づいてしまったのです。

そこで、キャリアアドバイザーの友人や現役エンジニアの先輩に相談した結果、自分がやりたかった学習の方向性がかなりズレてしまっていたことを知りました。

自分がやりたかった方向性として、

そして学習の問題点として、

  • 書籍の流れ通りに学習することで全体像が把握できていなかった
  • 何を作る予定なのかが明確になかった
  • 将来どうなりたいのか軸がブレブレだった

以上がありました。

今回はJavaという例でしたが、どの言語にも当てはまるよくある挫折例なので注意しましょう。

▼キャリアコンサルタントと一緒にキャリアを考えよう(無料)

失敗体験から学んだ「学習する前」が最重要であること

先ほどは、がむしゃらな学習で失敗した体験談をお話してきました。ここからが重要です。

失敗から学んだ重要なことは、

  • 経験豊富な第三者に相談して、自分にない視点でキャリアを見直すこと
  • 目的・目標設定を必ずすること。必ずです。
  • 学習経験者と一緒に学習スケジュールを作ること

この3つでした。

もうお気づきかもしれませんが、全て「学習前にすること」ですよね。

失敗があるので断言できますが、学習前に勝負は決まってしまいます。
これから学習するみなさんは、十分注意してください!

▼キャリアコンサルタントと一緒にキャリアを考えよう(無料)

質の高い目的・目標設定でキャリアの広がりは100倍以上

あなたのプログラミング学習の目的はどんなものでしょうか?

この2つのうちどちらかである方は多いかもしれません。ですが、これでは抽象的すぎて今後何をすればいいのかが分からず、学習効率がかなり悪くなってしまいます。

今後の学習を効率的に進めるためにも、明確に将来どうなりたいのかを決めて、そこに向かって目標設定することで人生を切り開くきっかけになっていきます。

実際にプログラミングの挫折率9割という挫折率の高さを考えると、独学であれこれと参考書や学習サイトに手を出して結局身につかなかったということも少なくないのです。

まずは目的・目標設定を決め、学習する軸を決めて効率的な学習環境を整えましょう。

▼キャリアコンサルタントと一緒にキャリアを考えよう(無料)

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を学ぶことが出来ます。この機会に是非活用していただければと思います。


33歳、未経験だった僕がフリーエンジニアになれた理由
現在フリーでWEBエンジニアをやられている濱口直行さん。33歳で、プログラミングを学び始め、約半年という短い期間で独立までされた学習ログを余すことなくインタビューさせていただきました。

プログラミングを学習中の方はもちろん、独立をお考えの方まで幅広く活用できる記事になっています。この機会に是非活用していただければと思います。


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

もし、あなたが、

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

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

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

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

cta_bannar-java1

非常識な結果を出した卒業生

活躍する現役エンジニア

人気記事セレクション

LINEで送る
Pocket

この記事が気に入ったら
いいね!をしてフォローしよう

最新情報をお届けします

書いた人

オータケ

オータケ

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