java.lang.Object | +--java.lang.String
String
クラスは文字列を表します。Java プログラム内の "abc"
などのリテラル文字列はすべて、このクラスのインスタンスとして実行されます。
文字列は定数です。この値を作成したあとに変更はできません。StringBuffer
は可変文字列をサポートします。String オブジェクトは不変であるため、共用することができます。たとえば
String str = "abc";
は、次と同じです。
char data[] = {'a', 'b', 'c'}; String str = new String(data);
文字列がどのように使われるかについて、さらに例を示します。
System.out.println("abc"); String cde = "cde"; System.out.println("abc" + cde); String c = "abc".substring(2,3); String d = cde.substring(1, 2);
String
クラスには、文字列のそれぞれの文字をテストするメソッドや、文字列の比較、文字列の検索、部分文字列の抽出、および文字をすべて大文字または小文字に変換した文字列のコピー作成などを行うメソッドがあります。
Java 言語は、文字列連結演算子 ( + ) およびその他のオブジェクトから文字列への変換に対する特別なサポートを提供します。文字列連結は、StringBuffer
クラスとその append
メソッドを使って実装されています。文字列変換は、toString
メソッドを使って実装されます。このメソッドは、Object
によって定義され、Java のすべてのクラスによって継承されます。文字列連結および文字列変換についての詳細は、Gosling、Joy、および Steele の「Java 言語仕様」を参照してください。
Object.toString()
,
StringBuffer
,
StringBuffer.append(boolean)
,
StringBuffer.append(char)
,
StringBuffer.append(char[])
,
StringBuffer.append(char[], int, int)
,
StringBuffer.append(int)
,
StringBuffer.append(long)
,
StringBuffer.append(java.lang.Object)
,
StringBuffer.append(java.lang.String)
コンストラクタの概要 | |
String()
新しく生成された String オブジェクトを初期化して、空の文字シーケンスを表すようにします。 |
|
String(byte[] bytes)
プラットフォームのデフォルトの文字エンコーディングを使って、指定されたバイト配列を変換することによって新しい String を構築します。 |
|
String(byte[] bytes,
int off,
int len)
プラットフォームのデフォルトの文字エンコーディングを使って、指定されたバイト列の部分配列を変換することによって、新しい String を構築します。 |
|
String(byte[] bytes,
int off,
int len,
String enc)
指定された文字エンコーディングを使用して、指定されたバイト部分配列を変換することによって、新しい String を構築します。 |
|
String(byte[] bytes,
String enc)
指定された文字エンコーディングを使って、指定されたバイト配列の変換を行うことによって、新しい String を構築します。 |
|
String(char[] value)
新しい String を割り当てて、これが文字配列引数に現在含まれている文字シーケンスを表すようにします。 |
|
String(char[] value,
int offset,
int count)
文字配列引数の部分配列からなる文字を含む新しい String を割り当てます。 |
|
String(String value)
新しく生成された String オブジェクトを初期化して、引数と同じ文字シーケンスを表すようにします。 |
|
String(StringBuffer buffer)
StringBuffer 型の引数に現在含まれている文字列を持つ新しい文字列を構築します。 |
メソッドの概要 | |
char |
charAt(int index)
指定されたインデックス位置にある文字を返します。 |
int |
compareTo(String anotherString)
2 つの文字列を辞書式に比較します。 |
String |
concat(String str)
指定された文字列をこの文字列の最後に連結します。 |
boolean |
endsWith(String suffix)
この文字列が、指定された接尾辞で終るかどうかを判定します。 |
boolean |
equals(Object anObject)
この文字列と指定されたオブジェクトを比較します。 |
byte[] |
getBytes()
String をプラットフォームのデフォルトの文字エンコーディングに従ってバイトに変換し、結果を新しいバイト配列に格納します。 |
byte[] |
getBytes(String enc)
String を指定された文字エンコーディングに従ってバイトに変換し、結果を新しいバイト配列に格納します。 |
void |
getChars(int srcBegin,
int srcEnd,
char[] dst,
int dstBegin)
この文字列から、コピー先の文字配列に文字をコピーします。 |
int |
hashCode()
この文字列のハッシュコードを返します。 |
int |
indexOf(int ch)
この文字列内で、指定された文字が最初に出現する位置のインデックスを返します。 |
int |
indexOf(int ch,
int fromIndex)
この文字列内で、指定されたインデックスから検索を開始し、指定された文字が最初に出現する位置のインデックスを返します。 |
int |
indexOf(String str)
この文字列内で、指定された部分文字列が最初に出現する位置のインデックスを返します。 |
int |
indexOf(String str,
int fromIndex)
指定されたインデックス以降で、指定された部分文字列がこの文字列内で最初に出現する位置のインデックスを返します。 |
int |
lastIndexOf(int ch)
この文字列内で、指定された文字が最後に出現する位置のインデックスを返します。 |
int |
lastIndexOf(int ch,
int fromIndex)
この文字列内で、指定された文字が最後に出現する位置のインデックスを返します (検索は指定されたインデックスから開始され、先頭方向に行われる)。 |
int |
length()
この文字列の長さを返します。 |
boolean |
regionMatches(boolean ignoreCase,
int toffset,
String other,
int ooffset,
int len)
2 つの文字列領域が等しいかどうかを判定します。 |
String |
replace(char oldChar,
char newChar)
この文字列内にあるすべての oldChar を newChar に置換した結果生成される、新しい文字列を返します。
|
boolean |
startsWith(String prefix)
この文字列が、指定された接頭辞で始まるかどうかを判定します。 |
boolean |
startsWith(String prefix,
int toffset)
この文字列の指定されたインデックス以降の部分文字列が、指定された接頭辞で始まるかどうかを判定します。 |
String |
substring(int beginIndex)
この文字列の部分文字列である新しい文字列を返します。 |
String |
substring(int beginIndex,
int endIndex)
この文字列の部分文字列である新しい文字列を返します。 |
char[] |
toCharArray()
この文字列を新しい文字配列に変換します。 |
String |
toLowerCase()
この String 内のすべての文字を小文字に変換します。 |
String |
toString()
このオブジェクト (すでに文字列である) 自身が返されます。 |
String |
toUpperCase()
この String 内のすべての文字を大文字に変換します。 |
String |
trim()
この文字列の両端から空白を除去します。 |
static String |
valueOf(boolean b)
boolean 引数の文字列表現を返します。 |
static String |
valueOf(char c)
char 引数の文字列表現を返します。 |
static String |
valueOf(char[] data)
char 配列引数の文字列表現を返します。 |
static String |
valueOf(char[] data,
int offset,
int count)
char 配列引数の特定の部分配列の文字列表現を返します。
|
static String |
valueOf(int i)
int 引数の文字列表現を返します。
|
static String |
valueOf(long l)
long 引数の文字列表現を返します。
|
static String |
valueOf(Object obj)
Object 引数の文字列表現を返します。 |
クラス java.lang.Object から継承したメソッド |
getClass,
notify,
notifyAll,
wait,
wait,
wait |
コンストラクタの詳細 |
public String()
String
オブジェクトを初期化して、空の文字シーケンスを表すようにします。public String(String value)
String
オブジェクトを初期化して、引数と同じ文字シーケンスを表すようにします。つまり、新しく作成された文字列は引数文字列のコピーになります。value
- String
public String(char[] value)
String
を割り当てて、これが文字配列引数に現在含まれている文字シーケンスを表すようにします。文字配列の内容がコピーされます。コピー後に文字配列が変更されても、新しく作成された文字列には影響しません。value
- 文字列の初期値value
が null
の場合public String(char[] value, int offset, int count)
value
- 文字列のソースである配列offset
- 初期オフセットcount
- 長さoffset
および count
引数インデックスによる文字列が value
配列の範囲外となる場合value
が null
の場合public String(byte[] bytes, int off, int len, String enc) throws UnsupportedEncodingException
String
を構築します。新しい String
の長さはエンコーディングによって変わるので、部分配列長と一致しないことがあります。bytes
- 文字列に変換されるバイトoffset
- 変換を行う先頭のバイトのインデックスlength
- 変換を行うバイト数enc
- サポートされる文字エンコーディングの名前public String(byte[] bytes, String enc) throws UnsupportedEncodingException
String
を構築します。新しい String
の長さはエンコーディングによって変わるので、バイト配列長と一致しないことがあります。bytes
- 文字列に変換されるバイトenc
- サポートされる文字エンコーディングの名前public String(byte[] bytes, int off, int len)
String
を構築します。新しい String
の長さはエンコーディングによって変わるので、部分配列の長さと一致しないことがあります。bytes
- 文字列に変換されるバイトoffset
- 変換を行う先頭のバイトのインデックスlength
- 変換を行うバイト数public String(byte[] bytes)
String
を構築します。新しい String
の長さはエンコーディングによって変わるので、バイト配列の長さと一致しないことがあります。bytes
- 文字列に変換されるバイトpublic String(StringBuffer buffer)
StringBuffer
型の引数に現在含まれている文字列を持つ新しい文字列を構築します。文字列バッファの内容がコピーされます。コピー後に文字列バッファが変更されても、新しく作成された文字列には影響しません。buffer
- StringBuffer
buffer
が null
の場合メソッドの詳細 |
public int length()
public char charAt(int index)
0
〜 length() - 1
の範囲になります。配列のインデックス付けの場合と同じように、文字列の最初の文字のインデックスは 0
、次の文字のインデックスは 1
と続きます。index
- 文字のインデックス0
になる。index
引数が負の値、または文字列の長さと同じかこれより大きい値の場合public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
コピーされる最初の文字のインデックスは srcBegin
、コピーされる最後の文字のインデックスは srcEnd-1
です。したがって、コピーされる文字数は srcEnd-srcBegin
となります。文字は dst
の部分配列にコピーされます。始点のインデックスは dstBegin
で、終点のインデックスは次のようになります。
dstbegin + (srcEnd-srcBegin) - 1
srcBegin
- コピー対象文字列内の最初の文字のインデックスsrcEnd
- コピー対象文字列内の最後の文字のあとのインデックスdst
- 転送先配列dstBegin
- コピー先の配列内での開始座標srcBegin
が負の値の場合 srcBegin
が srcEnd
より大きい場合 srcEnd
がこの文字列の長さより大きい場合 dstBegin
が負の値の場合 dstBegin+(srcEnd-srcBegin)
の値が dst.length
dst
が null
の場合public byte[] getBytes(String enc) throws UnsupportedEncodingException
String
を指定された文字エンコーディングに従ってバイトに変換し、結果を新しいバイト配列に格納します。enc
- サポートされる文字エンコーディングの名前public byte[] getBytes()
String
をプラットフォームのデフォルトの文字エンコーディングに従ってバイトに変換し、結果を新しいバイト配列に格納します。public boolean equals(Object anObject)
null
でなく、このオブジェクトと同じ文字シーケンスを表す String
オブジェクトである場合にだけ、結果は true
になります。anObject
- この String
と比較されるオブジェクトString
が等しい場合は true
、そうでない場合は false
compareTo(java.lang.String)
public int compareTo(String anotherString)
String
オブジェクトによって表される文字シーケンスが、引数文字列によって表される文字シーケンスと辞書式に比較されます。この String
オブジェクトが辞書式に引数文字列より前にある場合は、結果は負の整数になります。この String
オブジェクトが辞書式に引数文字列の後ろにある場合、結果は正の整数になります。文字列が等しい場合、結果は 0 になります。equals(Object)
メソッドが true
を返すとき、compareTo
は 0
を返します。
辞書式の順序の定義を示します。2 つの文字列が異なる場合、両方の文字列に対して有効なインデックスに位置する文字が異なるか、2 つの文字列の長さが異なるか、あるいはその両方が該当します。1 つ以上のインデックスの位置にある文字が異なる場合は、このうちのもっとも小さいインデックスを k とすると、演算子によって「より小さい」値と判定される、位置 k にある文字を持つ文字列が、もう一方の文字列より辞書式に前になります。この場合、compareTo
は 2 つの文字列で位置 k
にある 2 つの文字の値の差を返します。これは次の式で表される値になります。
有効なすべてのインデックス位置における文字が同じ場合は、短いほうの文字列が辞書式に前になります。この場合は、this.charAt(k)-anotherString.charAt(k)
compareTo
は文字列の長さの差を返します。これは次の式で表される値になります。
this.length()-anotherString.length()
anotherString
- 比較対象の String
0
。この文字列が文字列引数より辞書式に小さい場合は、0
より小さい値。この文字列が文字列引数より辞書式に大きい場合は、0
より大きい値anotherString
が null
の場合public boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)
この String オブジェクトの部分文字列が、引数 other の部分文字列と比較されます。これらの部分文字列が同じ文字シーケンスを表す場合、結果は true になります。ignoreCase が true の場合にだけ、大文字小文字が区別されません。比較の対象となる String オブジェクトの部分文字列は、インデックス toffset から始まり、長さは len です。比較の対象となる other の部分文字列は、インデックス ooffset から始まり、長さは len です。以下のどれかが true の場合にだけ、結果は false になります。
this.charAt(toffset+k) != other.charAt(ooffset+k)
およびCharacter.toLowerCase(this.charAt(toffset+k)) != Character.toLowerCase(other.charAt(ooffset+k))
Character.toUpperCase(this.charAt(toffset+k)) != Character.toUpperCase(other.charAt(ooffset+k))
ignoreCase
- true
の場合、文字の比較の際に大文字小文字は区別されないtoffset
- この文字列内の部分領域の開始オフセットother
- 文字列引数ooffset
- 文字列引数内の部分領域の開始オフセットlen
- 比較対象の文字数true
、そうでない場合は false
。一致した場合に、大文字小文字が区別されているかどうかは引数 ignoreCase
によって決まるpublic boolean startsWith(String prefix, int toffset)
prefix
- 接頭辞toffset
- 文字列の比較を開始する位置toffset
で始まるこのオブジェクトの部分文字列の接頭辞である場合は true
、そうでない場合は false
。toffset
が負の値の場合、あるいは String
オブジェクトの長さより大きい場合、結果は false
。そうでない場合は、結果は this.subString(toffset).startsWith(prefix)の式の結果と同じ
prefix
が null
の場合public boolean startsWith(String prefix)
prefix
- 接頭辞true
、そうでない場合は false
。引数が空の文字列の場合や、equals(Object)
メソッドによる判定においてこの String
オブジェクトに等しい場合にも true
が返されるprefix
が null
の場合public boolean endsWith(String suffix)
suffix
- 接尾辞true
、そうでない場合は false
。引数が空の文字列の場合や、String
オブジェクトが equals(Object)
メソッドによる判定においてこの String
オブジェクトに等しい場合にも、結果は true
になるsuffix
が null
の場合public int hashCode()
String
オブジェクトのハッシュコードは、int
演算を使用して次のようにして計算されます。
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
int
算術を使います。s[i]
は文字列の i 番目の文字、n
は文字列の長さ、^
はべき乗を示します。空の文字列のハッシュ値は 0 です。public int indexOf(int ch)
ch
を持つ文字がこの String
オブジェクトによって表される文字シーケンス内にある場合、最初に出現する位置のインデックスが返されます。つまり、次の式が true
となるような最小の k が返されます。
該当する文字がこの文字列内にない場合は、this.charAt(k) == ch
-1
が返されます。ch
- 文字-1
public int indexOf(int ch, int fromIndex)
値 ch
を持つ文字が、この String
オブジェクトによって表される文字シーケンスの fromIndex
より大きいか同じインデックス位置にある場合、該当する最初のインデックスが返されます。つまり、次の式が true となるような最小の k が返されます。
該当する文字がこの文字列内または位置(this.charAt(k) == ch) && (k >= fromIndex)
fromIndex
以降にない場合は -1
が返されます。
fromIndex
の値に対して制約はありません。負の値の場合は、0 の場合と同じ結果になり、この文字列全体が検索されます。この文字列の長さより大きい場合は、この文字列の長さに等しい場合と同じ結果になり、-1
が返されます。
ch
- 文字fromIndex
- 検索開始位置のインデックスfromIndex
と同じかこれより大きいインデックス位置にある場合は、最初に出現した位置のインデックス。文字がない場合は -1
public int lastIndexOf(int ch)
String の検索は最後の文字から開始され、先頭方向に行われます。this.charAt(k) == ch
ch
- 文字-1
public int lastIndexOf(int ch, int fromIndex)
上の式がthis.charAt(k) == ch) && (k <= fromIndex)
true
となるような最大の k です。ch
- 文字fromIndex
- 検索を開始するインデックス。fromIndex
の値に対して制約はない。この文字列の長さと同じかこれより大きい場合は、この文字列の長さより 1 小さい場合と同じ結果になり、この文字列全体が検索される。負の値の場合は、-1 の場合と同じ結果になり、-1 が返されるfromIndex
と同じかこれより小さいインデックス位置に最後に出現する位置のインデックス。指定された文字がその位置より前にない場合は -1
public int indexOf(String str)
上の式がthis.startsWith(str, k)
true
となるような最小の k です。str
- 任意の文字列-1
str
が null
の場合public int indexOf(String str, int fromIndex)
上の式がthis.startsWith(str, k) && (k >= fromIndex)
true
となるような最小の k です。
fromIndex
の値に対して制約はありません。負の値の場合は、0 の場合と同じ結果になり、この文字列全体が検索されます。この文字列の長さより大きい場合は、この文字列の長さに等しい場合と同じ結果になり、-1
が返されます。
str
- 検索対象の部分文字列fromIndex
- 検索開始位置のインデックスfromIndex
より大きい開始インデックスにある部分文字列である場合は、該当する最初の部分文字列の最初の文字のインデックス。fromIndex
以降で始まる部分文字列がない場合は -1
str
が null
の場合public String substring(int beginIndex)
例
"unhappy".substring(2) では "happy" が返される "Harbison".substring(3) では "bison" が返される "emptiness".substring(9) では "" (空の文字列) が返される
beginIndex
- 開始インデックス (この値を含む)beginIndex
が負の値の場合、あるいはこの String
オブジェクトの長さより大きい場合public String substring(int beginIndex, int endIndex)
beginIndex
から始まり、インデックス endIndex - 1
にある文字までです。したがって、部分文字列の長さは endIndex-beginIndex
になります。
例
"hamburger".substring(4, 8) では "urge" が返される "smiles".substring(1, 5) では "mile" が返される
beginIndex
- 開始インデックス (この値を含む)endIndex
- 終了インデックス (この値を含まない)beginIndex
が負の値である場合、endIndex
がこの String
オブジェクトの長さより大きい場合、あるいは beginIndex
が endIndex
より大きい場合public String concat(String str)
引数文字列の長さが 0
の場合は、この String
オブジェクトが返されます。そうでない場合は、この String
オブジェクトによって表される文字列と引数文字列によって表される文字列とを連結したものを表す新しい String
オブジェクトが生成されます。
例
"cares".concat("s") では "caress" が返される "to".concat("get").concat("her") では "together" が返される
str
- この String
の最後に連結される String
str
が null
の場合public String replace(char oldChar, char newChar)
oldChar
を newChar
に置換した結果生成される、新しい文字列を返します。
文字 oldChar
がこの String
オブジェクトによって表される文字列内にない場合は、この String
オブジェクトへの参照が返されます。そうでない場合は、この String
オブジェクトによって表される文字列と同じ文字列を表す、新しい String
オブジェクトが生成されます。ただし、文字列内の oldChar
はすべて newChar
に置換されます。
例
"mesquite in your cellar".replace('e', 'o') では "mosquito in your collar" が返される "the war of baronets".replace('r', 'y') では "the way of bayonets" が返される "sparring with a purple porpoise".replace('p', 't') では "starring with a turtle tortoise" が返される "JonL".replace('q', 'x') では "JonL" (変更なし) が返される
oldChar
- 以前の文字newChar
- 新しい文字oldChar
を newChar
に置換することによって生成された文字列public String toLowerCase()
Character.toLowerCase(char)
,
toUpperCase()
public String toUpperCase()
Character.toLowerCase(char)
,
toUpperCase()
public String trim()
この String
オブジェクトが空の文字列を表す場合、あるいはこの String
オブジェクトによって表される文字列の最初と最後の文字のコードが '\u0020'
(スペース文字) より大きい場合は、この String
オブジェクトへの参照が返されます。
文字列内に '\u0020'
より大きいコードの文字がない場合は、空の文字列を表す新しい String
オブジェクトが生成されて返されます。
たとえば、k が文字列内の最初の文字のインデックスであり、'\u0020'
より大きいコード値を持ち、m が文字列内の最後の文字のインデックスであり、'\u0020'
より大きいコード値を持つ場合は、インデックス k にある文字で始まり、インデックス m にある文字で終る、この文字列の部分文字列を表す新しい String
オブジェクトが生成されます。つまり、これは this.substring(k, m+1)
の結果と同じです。
このメソッドは、文字列の先頭と最後から空白を切り取るために使用できます。この場合、実際には、すべての ASCII 制御文字も切り取りられます。
public String toString()
public char[] toCharArray()
public static String valueOf(Object obj)
Object
引数の文字列表現を返します。obj
- Object
null
の場合は、"null"
に等しい文字列。そうでない場合は、obj.toString()
の値Object.toString()
public static String valueOf(char[] data)
char
配列引数の文字列表現を返します。文字配列の内容がコピーされます。コピー後にその文字が変更されても、新しく作成された文字列には影響しません。data
- char
配列public static String valueOf(char[] data, int offset, int count)
char
配列引数の特定の部分配列の文字列表現を返します。
offset
引数は部分配列の最初の文字のインデックスを表します。count
引数は部分配列の長さを表します。部分配列の内容がコピーされます。コピー後に文字配列が変更されても、新しく作成された文字列には影響しません。
data
- 文字配列offset
- String
の値への初期オフセットcount
- String
の値の長さdata
が null
の場合offset
が負の値の場合、count
が負の値の場合、あるいは offset+count
が data.length
より大きい場合public static String valueOf(boolean b)
boolean
引数の文字列表現を返します。b
- boolean
true
の場合は、"true"
に等しい文字列。そうでない場合は、"false"
に等しい文字列public static String valueOf(char c)
char
引数の文字列表現を返します。c
- char
c
が格納された、新しく割り当てられた長さ 1
の文字列public static String valueOf(int i)
int
引数の文字列表現を返します。
この表現は 1 つの引数を持つ Integer.toString
メソッドによって返されるものとまったく同じです。
i
- int
int
引数の文字列表現が格納されている、新しく割り当てられた文字列Integer.toString(int, int)
public static String valueOf(long l)
long
引数の文字列表現を返します。
この表現は 1 つの引数を持つ Long.toString
メソッドによって返されるものとまったく同じです。
l
- long
long
引数の文字列表現が格納されている、新しく割り当てられた文字列Long.toString(long)