Java String クラス

文字列はJavaプログラミングで広く利用されています。Javaでは文字列はオブジェクトであり、Javaは文字列を作成・操作するためにStringクラスを提供しています。


文字列の作成

文字列を作成する最も簡単な方法は次のとおりです:

String str = "サンプル";

コード内で文字列定数に遭遇すると、ここでの値は "サンプル、コンパイラはその値を使用して String オブジェクトを作成します。

他のオブジェクトと同様に、キーワードとコンストラクタメソッドを使用して String オブジェクトを作成できます。

コンストラクタを使用して文字列を作成する:

String str2=new String("サンプル");

String で作成された文字列は共通プールに格納され、new で作成された文字列オブジェクトはヒープ上にあります:

String s1 = "サンプル"; //String による直接作成 String s2 = "サンプル"; //String による直接作成 String s3 = s1; //同じ参照 String s4 = new String("サンプル"); //String オブジェクトの作成 String s5 = new String("サンプル"); //String オブジェクトの作成

String クラスには 11 種類のコンストラクタがあり、これらのメソッドは文字列を初期化するための異なるパラメータを提供します。たとえば、文字配列パラメータを提供します:

StringDemo.java のコード:

public class StringDemo{ public static void main(String args[]){ char[] helloArray = { 'r', 'u', 'n', 'o', 'o', 'b'}; String helloString = new String(helloArray); System.out.println( helloString ); } }

上記の例をコンパイルして実行した結果は次のとおりです:

サンプル

注意:String クラスは不変です。つまり、String オブジェクトを作成すると、その値は変更できません(詳細はノートの解析を参照してください)。

文字列に多くの変更を加える必要がある場合は、次を使用することを選択する必要があります:StringBuffer & StringBuilder クラス。


文字列の長さ

オブジェクトに関する情報を取得するために使用されるメソッドは、アクセサメソッドと呼ばれます。

String クラスのアクセサメソッドの1つは length() メソッドで、文字列オブジェクトに含まれる文字数を返します。

次のコードを実行すると、len 変数は 14 になります:

StringDemo.java のコード:

public class StringDemo { public static void main(String args[]) { String site = "www.example.com"; int len = site.length(); System.out.println( "サンプルのURL長さ:" + len ); } }

上記の例をコンパイルして実行した結果は次のとおりです:

サンプル网址长度 : 14

文字列の連結

String クラスは、2つの文字列を連結するメソッドを提供します:

string1.concat(string2);

string2 を string1 に連結した新しい文字列を返します。文字列定数に対して concat() メソッドを使用することもできます。例:

"我的名字是 ".concat("サンプル");

より一般的なのは、'+' 演算子を使用して文字列を連結することです。例:

"Hello," + " サンプル" + "!"

結果は次のとおりです:

"Hello, サンプル!"

以下に例を示します:

StringDemo.java のコード:

public class StringDemo { public static void main(String args[]) { String string1 = "サンプルのURL:"; System.out.println("1、" + string1 + "www.example.com"); } }

上記の例をコンパイルして実行した結果は次のとおりです:

1、サンプル网址:www.example.com

フォーマット文字列の作成

ご存知のとおり、フォーマットされた数値を出力するには printf() メソッドと format() メソッドを使用できます。

String クラスは静的メソッド format() を使用して、PrintStream オブジェクトではなく String オブジェクトを返します。

String クラスの静的メソッド format() は、1回限りの印刷出力だけでなく、再利用可能なフォーマット文字列を作成するために使用できます。

次に示すとおりです:

System.out.printf("浮動小数点型変数の値は" + "%f、整数型変数の値は" + "%d、文字列変数の値は" + "is %s", floatVar, intVar, stringVar);

次のように書くこともできます

String fs; fs = String.format("浮動小数点型変数の値は" + "%f、整数型変数の値は" + "%d、文字列変数の値は" + " %s", floatVar, intVar, stringVar);

String メソッド

以下は String クラスがサポートするメソッドです。詳細については、Java String APIドキュメントを参照してください:

SN(番号) メソッドの説明
1 char charAt(int index)
指定されたインデックス位置にある char 値を返します。
2 int compareTo(Object o)
この文字列を別のオブジェクトと比較します。
3 int compareTo(String anotherString)
2つの文字列を辞書順で比較します。
4 int compareToIgnoreCase(String str)
2つの文字列を大文字小文字を無視して辞書順で比較します。
5 String concat(String str)
指定された文字列をこの文字列の末尾に連結します。
6 boolean contentEquals(StringBuffer sb)
この文字列が指定された StringBuffer と同じ順序の文字を持つ場合にのみ true を返します。
7 static String copyValueOf(char[] data)
指定された配列内の文字シーケンスを表す String を返します。
8 static String copyValueOf(char[] data, int offset, int count)
指定された配列内の文字シーケンスを表す String を返します。
9 boolean endsWith(String suffix)
この文字列が指定された接尾辞で終わるかどうかをテストします。
10 boolean equals(Object anObject)
この文字列を指定されたオブジェクトと比較します。
11 boolean equalsIgnoreCase(String anotherString)
大文字小文字を無視して、この String を別の String と比較します。
12 byte[] getBytes()
プラットフォームのデフォルト文字セットを使用してこの String を byte シーケンスにエンコードし、結果を新しい byte 配列に格納します。
13 byte[] getBytes(String charsetName)
指定された文字セットを使用してこの String を byte シーケンスにエンコードし、結果を新しい byte 配列に格納します。
14 void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
この文字列から文字をターゲット文字配列にコピーします。
15 int hashCode()
この文字列のハッシュコードを返します。
16 int indexOf(int ch)
指定された文字がこの文字列内で最初に出現するインデックスを返します。
17 int indexOf(int ch, int fromIndex)
指定された文字がこの文字列内で最初に出現するインデックスを返します。検索は指定されたインデックスから開始されます。
18 int indexOf(String str)
指定された部分文字列がこの文字列内で最初に出現するインデックスを返します。
19 int indexOf(String str, int fromIndex)
指定された部分文字列がこの文字列内で最初に出現するインデックスを返します。指定されたインデックスから開始します。
20 String intern()
文字列オブジェクトの正規化された表現を返します。
21 int lastIndexOf(int ch)
指定された文字がこの文字列内で最後に出現するインデックスを返します。
22 int lastIndexOf(int ch, int fromIndex)
指定された文字がこの文字列内で最後に出現するインデックスを返します。指定されたインデックスから逆方向に検索します。
23 int lastIndexOf(String str)
この文字列内で指定された部分文字列が最も右側に出現するインデックスを返します。
24 int lastIndexOf(String str, int fromIndex)
指定された部分文字列がこの文字列内で最後に出現するインデックスを返します。指定されたインデックスから逆方向に検索します。
25 int length()
この文字列の長さを返します。
26 boolean matches(String regex)
この文字列が指定された正規表現に一致するかどうかを示します。
27 boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)
2つの文字列領域が等しいかどうかをテストします。
28 boolean regionMatches(int toffset, String other, int ooffset, int len)
2つの文字列領域が等しいかどうかをテストします。
29 String replace(char oldChar, char newChar)
この文字列内のすべての oldChar を newChar で置き換えた新しい文字列を返します。
30 String replaceAll(String regex, String replacement)
指定された replacement を使用して、この文字列内の指定された正規表現に一致するすべての部分文字列を置き換えます。
31 String replaceFirst(String regex, String replacement)
指定された replacement を使用して、この文字列内の指定された正規表現に一致する最初の部分文字列を置き換えます。
32 String[] split(String regex)
指定された正規表現の一致に基づいて、この文字列を分割します。
33 String[] split(String regex, int limit)
指定された正規表現への一致に基づいて、この文字列を分割します。
34 boolean startsWith(String prefix)
この文字列が指定された接頭辞で始まるかどうかをテストします。
35 boolean startsWith(String prefix, int toffset)
指定されたインデックスから始まるこの文字列の部分文字列が、指定された接頭辞で始まるかどうかをテストします。
36 CharSequence subSequence(int beginIndex, int endIndex)
このシーケンスのサブシーケンスである新しい文字シーケンスを返します。
37 String substring(int beginIndex)
この文字列の部分文字列である新しい文字列を返します。
38 String substring(int beginIndex, int endIndex)
この文字列の部分文字列である新しい文字列を返します。
39 char[] toCharArray()
この文字列を新しい文字配列に変換します。
40 String toLowerCase()
デフォルトのロケールの規則を使用して、この String 内のすべての文字を小文字に変換します。
41 String toLowerCase(Locale locale)
指定された Locale の規則を使用して、この String 内のすべての文字を小文字に変換します。
42 String toString()
このオブジェクト自体を返します(これはすでに文字列です!)。
43 String toUpperCase()
デフォルトのロケールの規則を使用して、この String 内のすべての文字を大文字に変換します。
44 String toUpperCase(Locale locale)
指定された Locale の規則を使用して、この String 内のすべての文字を大文字に変換します。
45 String trim()
先頭および末尾の空白を無視して、文字列のコピーを返します。
46 static String valueOf(primitive data type x)
指定された data type 型の x 引数の文字列表現を返します。
47 contains(CharSequence chars)
指定された文字シーケンスを含むかどうかを判定します。
48 isEmpty()
文字列が空かどうかを判定します。
その他の拡張