文字列

CharSequenceインターフェイス

文字列に関するクラス、

  • Stringクラス
  • StringBuilderクラス
  • StringBufferクラス

などは、java.lang.CharSequenceインターフェイスを実装したものになります。

CharSequenceのメソッド
メソッド 説明
char charAt(int index) 指定されたインデックス位置にあるchar値を返す
int length() この文字シーケンスの長さを返す
CharSequence subSequence(int start, int end) このシーケンスのサブシーケンスである新規CharSequenceを返す
String toString() このシーケンス内の文字を含む文字列を、このシーケンスと同じ順序で返す

Stringクラス

文字列結合演算子 (+演算子)

式において+演算子は、オペランドの1つがStringであれば文字列結合演算子とみなされます。そのとき一方がStringでなければ、それは暗黙的にStringに変換されます。

  • Stringクラス + 基本データ型 … Stringに変換
  • Stringクラス + オブジェクト … toString()メソッドの呼び出し

文字列の比較

メソッド 説明
equals() この文字列と指定されたオブジェクトを比較する
equalsIgnoreCase() この文字列と指定された文字列を、大文字と小文字を区別せずに比較する
contentEquals() この文字列と指定されたシーケンスを比較する
compareTo() この文字列と指定された文字列を、Unicode値に基づいて辞書的に比較する
regionMatches() この文字列と指定された文字列の文字列領域を比較する

ストリームへの変換

文字列をbyte配列へ格納し、それをByteArrayInputStreamクラスから読み込ませることで、文字列をストリームに変換できます。

String str = "abc";
InputStream stream = new ByteArrayInputStream(str.getBytes("UTF-8"));
type conversion - How do I convert a String to an InputStream in Java? - Stack Overflow

文字列の書式化 (Formatter)

Formatterクラスを使用します。

フォーマット指定子 (format specifier)

%[argument_index$][flags][width][.precision]conversion
書式 説明 必須
引数インデックス
(argument_index)
引数リスト内での引数の位置を示す。最初の引数は「1$」、2番目は「2$」のようになる。 ×
フラグ
(flags)
出力書式を変更する文字のセット。有効なフラグのセットは、変換によって異なる。 ×

(width)
出力する最小文字数。 ×
精度
(precision)
文字数を制限するために通常使用される正の10進整数。その動作は変換によって異なる。 ×
変換
(conversion)
引数を書式設定する方法を示す。指定された引数で有効な変換セットは、引数のデータ型によって異なる。

変換 (conversion)

カテゴリ 変換指定子 説明
数値 整数 d 10進整数
o 8進整数
x、X 16進整数
浮動小数点 e、E 浮動小数点表示形式の10進数
f 10進数
g、G 四捨五入処理後の精度および値に応じて、浮動小数点表示形式または10進数
a、A 有効数字および指数を持つ浮動小数点数
文字 c、C Unicode文字
一般
※1
ブール値 b、B
引数の値 結果
null false
booleanまたはBoolean String.valueOf()の戻り値
その他 true
ハッシュコード h、H
引数の値 結果
null null
その他 Integer.toHexString( arg.hashCode() )の戻り値
文字列 s、S
引数の値 結果
null null
Formattableを実装 arg.formatTo()
その他 arg.toString()の戻り値
日付/時刻 t、T 日付および時刻変換文字用の接頭辞
※1 引数の値によって結果が異なります。
その他
カテゴリ 変換指定子 説明
パーセント % リテラル「%」 (\u0025)
行区切り文字 n プラットフォーム固有の行区切り文字
日付 / 時刻変換
時刻
変換指定子 説明
H 24時間制の時。必要に応じて0を先頭に追加し、2桁で表現する (00 - 23)
I 12時間制の時。必要に応じて0を先頭に追加し、2桁で表現する (00 - 12)
k 24時間制の時 (0 - 23)
l 12時間制の時 (1 - 12)
M 分。必要に応じて0を先頭に追加し、2桁で表現する (00 - 59)
S 秒。必要に応じて0を先頭に追加し、2桁で表現する (00 - 60)。60はうるう年での秒のサポートに必要な特殊な値
L ミリ秒。必要に応じて0を先頭に追加し、3桁で表現する (000 - 999)
N ナノ秒。必要に応じて0を先頭に追加し、9桁で表現する (000000000 - 999999999)
p ロケールに特定の午前または午後の小文字 (amまたはpmなど) のマーカー。変換接頭辞のTを使用すると、結果は大文字で強制出力される
z RFC 822に準拠した、GMTからの数値タイムゾーンオフセット ( - 0800など)
Z タイムゾーンの省略形を表す文字列。Formatterのロケールは、引数のロケール (存在する場合) よりも優先される
s 1970年1月1日 00:00:00 UTCのエポック開始からの秒 (Long.MIN_VALUE/1000 ~ Long.MAX_VALUE/1000まで)
Q 1970年1月1日 00:00:00 UTCのエポック開始から (つまり、Long.MIN_VALUE ~ Long.MAX_VALUEまで) のミリ秒
日付
変換指定子 説明
B ロケール固有の月の完全な名前 (「January」、「February」など)
b ロケール固有の月の省略名 (「Jan」、「Feb」など)
h 'b'と同じ
A ロケール固有の曜日の完全な名前 (「Sunday」、「Monday」など)
a ロケール固有の曜日の短縮名 (「Sun」、「Mon」など)
C 4桁の年を100で割った値。必要に応じて0を先頭に追加し、2桁で表示する (00 - 99)
Y 年。必要に応じて0を先頭に追加し、4桁以上で表現する。たとえば0092は、グレゴリオ歴の92CEと等価
y 年の下2桁。必要に応じて0を先頭に追加する (00 - 99)
j 年の何日目かを表す日。必要に応じて0を先頭に追加し、3桁で表現する。たとえばグレゴリオ歴の場合、001 - 366
m 月。必要に応じて0を先頭に追加し、2桁で表現する (01 - 13)
d 月の何日目かを表す日。必要に応じて0を先頭に追加し、2桁で表現する (01 - 31)
e 月の何日目かを表す日。最大2桁で表現する (1 - 31)
一般
変換指定子 説明
R 「%tH:%tM」として、24時間制で書式設定された時刻
T 「%tH:%tM:%tS」として、24時間制で書式設定された時刻
r 「"%tI:%tM:%tS%Tp"」として、12時間制で書式設定された時刻。午前および午後マーカーの位置 ('%Tp') はロケールにより異なる
D 「%tm/%td/%ty」として書式設定された日付
F 「%tY - %tm - %td」として書式設定された、ISO 8601に準拠した日付
c 「%ta%tb%td%tT%tZ%tY」として書式設定された日付および時刻 (「Sun Jul 20 16:17:00 EDT 1969」など)

フラグ (flags)

フラグ 説明
- 左揃え
# 変換に依存する代替フォームを使用する
+ 常に符号を含む
(空白) 先頭に正の値を示す空白を含む
0 ゼロを追加
, ロケール固有のグループ化区切り文字を含む
( 負の数値をかっこで囲む

変換指定子によってはサポートされません。

精度 (precision)

変換指定子ごとに適用のされ方が異なります。

カテゴ 変換指定子 説明
一般 すべて 出力される最大文字数
浮動小数点 e、E、f 10進数の区切り文字の後の桁数
g、G 四捨五入後の結果として得られる絶対値の合計桁数
a、A 指定できない
その他 すべて 指定できない

Stringクラス

Stringクラスならば、format()メソッドによって書式化された文字列を取得できます。

public static String format(
    String format,
    Object... args
    )

formatで書式文字列を、argsでそれに渡す引数を指定します。

Javaのドキュメントから検索