Java Stringクラス完全ガイド:生成、操作、主要メソッド46選
Stringクラスの概要
Javaで広く使われる文字列は文字シーケンスであり、オブジェクトとして扱われます。java.lang.Stringクラスが生成・操作機能を提供します。
文字列の生成
最も直接的な方法:リテラル
String greeting = "Hello world!";
文字列リテラルに遭遇するとコンパイラがStringオブジェクトを自動生成。
new + コンストラクタ
Stringクラスには11個のコンストラクタがあり、char配列等から生成可能。
char[] helloArray = {'h','e','l','l','o','.'};
String helloString = new String(helloArray); // "hello."
重要:Stringは不変(immutable)
一度生成されたStringオブジェクトは変更不可。大量変更が必要ならStringBufferまたはStringBuilderを使用。
文字列長取得:length()
アクセサメソッドの一つ。文字数(char単位)を返す。
String palindrome = "Dot saw I was Tod";
int len = palindrome.length(); // 17
文字列連結
concat()メソッド:s1.concat(s2)で新しい文字列返却+演算子:より一般的。"Hello" + " " + "World!"→"Hello World!"
フォーマット文字列生成:String.format()
printf()と同様のフォーマットで、PrintStreamではなくStringオブジェクトを返すため再利用可能。
String fs = String.format("Float: %f, Int: %d, Str: %s", floatVar, intVar, stringVar);
System.out.println(fs);
String主要メソッド46選
| # | メソッド | 説明 |
|---|---|---|
| 1 | charAt(int index) | 指定インデックスの文字返却 |
| 2 | compareTo(Object o) | このStringを別Objectと比較 |
| 3 | compareTo(String another) | 2文字列を辞書順比較 |
| 4 | compareToIgnoreCase(String) | 大文字小文字無視で辞書順比較 |
| 5 | concat(String str) | 指定文字列を末尾連結 |
| 6 | contentEquals(StringBuffer) | StringBufferと同一シーケンスか判定 |
| 7 | copyValueOf(char[]) | char配列からString生成(静的) |
| 8 | copyValueOf(char[], offset, count) | 部分配列からString生成(静的) |
| 9 | endsWith(String suffix) | 指定サフィックスで終わるか判定 |
| 10 | equals(Object) | 指定オブジェクトと等しいか判定 |
| 11 | equalsIgnoreCase(String) | 大文字小文字無視で等価判定 |
| 12 | getBytes() | プラットフォームデフォルトcharsetでバイト配列化 |
| 13 | getBytes(String charset) | 指定charsetでバイト配列化 |
| 14 | getChars(srcBegin, srcEnd, dst[], dstBegin) | 文字を宛先char配列へコピー |
| 15 | hashCode() | この文字列のハッシュコード返却 |
| 16 | indexOf(int ch) | 指定文字の初出現インデックス返却 |
| 17 | indexOf(int ch, fromIndex) | 指定位置から指定文字検索 |
| 18 | indexOf(String str) | 指定部分文字列の初出現インデックス |
| 19 | indexOf(String str, fromIndex) | 指定位置から部分文字列検索 |
| 20 | intern() | 文字列の標準表現返却(文字列プール) |
| 21 | lastIndexOf(int ch) | 指定文字の最終出現インデックス |
| 22 | lastIndexOf(int ch, fromIndex) | 指定位置から逆方向検索 |
| 23 | lastIndexOf(String str) | 指定部分文字列の最右出現 |
| 24 | lastIndexOf(String str, fromIndex) | 指定位置から逆方向部分文字列検索 |
| 25 | length() | 文字列長返却 |
| 26 | matches(String regex) | 正規表現マッチ判定 |
| 27 | regionMatches(ignoreCase, toffset, other, ooffset, len) | 2文字列領域が等しいか判定 |
| 28 | regionMatches(toffset, other, ooffset, len) | 同上(大文字小文字区別) |
| 29 | replace(oldChar, newChar) | 全oldCharをnewCharに置換した新文字列 |
| 30 | replaceAll(regex, replacement) | 正規表現マッチ部分を置換 |
| 31 | replaceFirst(regex, replacement) | 最初のマッチのみ置換 |
| 32 | split(String regex) | 正規表現で分割し配列返却 |
| 33 | split(String regex, int limit) | 分割上限指定付き |
| 34 | startsWith(String prefix) | 指定プレフィックスで始まるか判定 |
| 35 | startsWith(String prefix, toffset) | 指定位置からプレフィックス判定 |
| 36 | subSequence(begin, end) | 部分配列をCharSequenceで返却 |
| 37 | substring(int begin) | 指定位置から末尾までの部分文字列 |
| 38 | substring(begin, end) | 指定範囲の部分文字列 |
| 39 | toCharArray() | 文字列を新char配列に変換 |
| 40 | toLowerCase() | 全文字を小文字化(デフォルトロケール) |
| 41 | toLowerCase(Locale) | 指定ロケールで小文字化 |
| 42 | toString() | このオブジェクト自身返却(Stringは自らString) |
| 43 | toUpperCase() | 全文字を大文字化(デフォルトロケール) |
| 44 | toUpperCase(Locale) | 指定ロケールで大文字化 |
| 45 | trim() | 前後空白除去したコピー返却 |
| 46 | valueOf(primitive) | プリミティブ値の文字列表現返却(静的、オーバーロード多数) |
よく使うメソッドの使い分け
- 比較:
equals()(内容)、==(参照身分)、compareTo()(順序) - 検索:
indexOf()/lastIndexOf()(単純)、matches()(正規表現) - 抽出:
substring()/subSequence() - 分割:
split() - 置換:
replace()(文字/固定文字列)、replaceAll()(正規表現) - 大小文字:
toLowerCase()/toUpperCase() - 変換:
toCharArray(),getBytes(),valueOf()
Java
- Java文字列をマスター:生成、メソッド、ベストプラクティス
- Javaのfinalキーワード完全解説:変数、メソッド、クラスでの活用法
- Java instanceof演算子完全ガイド:基本から継承・インターフェースまで
- Java Staticネストクラスの理解:用法、違い、実例
- Java無名インナークラス完全ガイド:定義、構文、実践例
- Javaシングルトンパターン完全解説:安全な実装と活用法
- Java Enumの文字列表現マスター:デフォルト、オーバーライド、高度なパターン
- Javaリフレクション完全ガイド:実行時のクラス・メソッド・フィールド検査
- Java ObjectOutputStream完全ガイド:シリアル化、メソッド、実践例
- Javaジェネリクス完全ガイド:再利用可能で型安全なコードの構築
- Javaファイル操作のマスター:java.ioによる作成・読み取り・書き込み・削除