java.lang.Stringクラスとは
java.lang.Stringクラスは、文字列を扱うために実装されているクラス。java.lang内に実装されているクラスのため、importをすることなく利用することができる。
また、stringクラスはnew演算子を使わなくてもオブジェクトを生成することが可能で、String str = “こんにちは”のような記述をになる。
さまざまなメソッド
Stringクラスには、変数aと変数bの値が同じかどうかを調べるものや変数aの値の文字数を調べる等、色々なメソッドが用意されている。
目次
メソッド名 | 簡単なメソッドの説明 | 詳しいメソッドの説明 |
---|---|---|
equals | 比較している文字列が正しいかどうかを調べる | 1. equalsメソッドの解説 |
length | 文字列の長さを文字数で返す | 2. lengthメソッドの解説 |
indexOf | 文字列に含まれる部分文字列を検索 | 3. indexOfメソッドの解説 |
charAt | 引数で指定された位置にある1文字だけを抜き出して戻す | 4. charAtメソッドの解説 |
substring | 文字列から任意の文字列を抽出する | 5. substringメソッドの解説 |
replace | 文字列を置き換える | 6. replaceメソッドの解説 |
startsWith | 文字列が引数で指定された文字で始まるかどうかを調べる | 7. startsWithメソッドの解説 |
endsWith | 引数の文字で終わっているかどうかを調べる | 8. endsWithメソッドの解説 |
concat | インスタンスが保持する文字列を、引数として渡された文字列と連結し、新しい文字列を戻す | 9. concatメソッドの解説 |
append | 文字列に新しい文字列を追加する | 10. appendメソッドの解説 |
reverse | 文字列を反転させる | 11. reverseメソッドの解説 |
intern | コンスタントプールを含むメモリ内の文字列を探して、再利用 | 12. internメソッドの解説 |
equalsメソッド
このメソッドは、Objectクラスに定義されているため、すべてのクラスが引き継いでいる。しかし、同値性の確認方法は各クラスによって異なるため、equalsメソッドはオーバーライドして使うことを前提としている。このメソッドをオーバーライドするときには、次のような条件を満たさないといけない。
- null以外の参照値xがあった時、x.equals(x)はtrueを返すこと
- null以外の参照値xとyがあった時、y.equals(x)がtrueを返す場合は、x.equals(y)はtrueを返すこと
- null以外の参照値xとy、zがあった時、x.equals(y)がtrueを返し、y.equals(z)がtrueを返す場合、x.equals(z)はtrueを返すこと
- null以外の参照値xとyがあった時、x.equals(y)を複数回呼び出しても、比較で使われた情報が変更されていなければ、一貫してtrueを返すか、一貫してfalseを返すこと
- null以外の参照値xについて、x.equals(null)はfalseを返すこと
これらの条件は、APIドキュメントに掲載されており、オーバーライドするときには条件を満たすよう実装しなければいけない。
メソッドの定義方法
String str1 = "おはよう";
String str2 = "こんにちは";
System.out.println(str1.equals(str2));
//実行結果
false
lengthメソッド
このメソッドは、文字列を返す際に、半角英数字も全角英数字も同じように文字列を戻す。そのため、半角も全角も1文字としてカウントされる。
メソッドの定義方法
string str = "abc";
System.out.println(str.length());
//実行結果
3
indexOfメソッド
このメソッドは、位置を調べたい文字をchar型で渡す以外にも、文字列を渡すこともできる。文字列を引数に渡した場合、このメソッドはその文字列が始まる最初の文字位置(0を基準とする)を戻す。
メソッドの定義方法(引数が文字の場合)
String str = "abcde";
System.out.println(str.indexOf('c'));
//実行結果
2
メソッドの定義方法(引数が文字列の場合)
String str = "abcde";
System.out.println(str.indexOf('bc'));
//実行結果
1
charAtメソッド
このメソッドはStringクラスの代表的なメソッドの1つ。インスタンスが保持している文字列から、引数で指定された位置にある1文字だけを抜き出して戻す。引数には抜き出したい文字の位置を指定する。文字番号の開始は0から始める。
メソッドの定義方法
String str = "こんにちは";
System.out.println(str.charAt(2));
//実行結果
に
substringメソッド
このメソッドは、文字列から任意の文字列を抽出するメソッド。抽出する文字列を指定するために使う範囲は、次の図のように文字と文字の間に線を引き、番号を振ると分かりやすい。引数が1つの場合は、指定した引数以降が抽出される。
【文字列を抽出する際のイメージ】
メソッドの定義方法(引数が2つの場合)
String str = "abcde"
System.out.println(str.substring(2,4));
//実行結果
cd
メソッドの定義方法(引数が1つの場合)
String str = "abcde"
System.out.println(str.substring(3));
//実行結果
de
replaceメソッド
このメソッドは、文字列を置き換えるためのメソッド。文字列の置き換えは先頭から始まり、文字列の最後まで行われる。このメソッドはオーバーロードされており、char型の引数を2つ受け取るものと、CharSequence型の引数を2つ受け取るものの2種類がある。char型かCharSequence型のうち、どちらか片方しか受け取らない。このような2つの型が混在するオーバーロードは存在しない。
メソッドの定義方法(char型)
String str = "aaaa";
System.out.println(str.replace("aa","b"));
//実行結果
bb
メソッドの定義方法(CharSequence型)
String str = "Hello World";
System.out.println(str.replace("World","Japan"));
//実行結果
Hello Japan
startsWithメソッド
このメソッドは、文字列が引数で指定された文字で始まるかどうかを調べるためのメソッド。調べた結果は真偽値で戻される。
メソッドの定義方法
String str = "abc";
System.out.println(str.startsWith("a"));
//実行結果
true
endsWithメソッド
このメソッドは、文字列が引数で指定された文字で終わっているかどうかを調べるメソッド。調べた結果は真偽値で戻される。
メソッドの定義方法
String str = "abc";
System.out.println(str.endsWith("c"));
//実行結果
true
concatメソッド
このメソッドは、Stringクラスに用意されているメソッドの1つで、インスタンスが保持する文字列を、引数として渡された文字列と連結し、新しい文字列を戻すメソッド。+演算子による文字列連結と同じ効果があるが、違いは+演算子は a+b=abに対して、concatメソッドはa+b=cになる。appendメソッドと違い、インスタンスを生成する。
メソッドの定義方法
String str1 = "こんにちは";
String str2 = "おはよう";
System.out.println(str1.concat(str2));
//実行結果
こんにちはおはよう
appendメソッド
このメソッドは、文字列に新しい文字列を追加するメソッド。追加された文字列は、既存の文字列も後ろに追加される。concatメソッドと違い、インスタンスを生成しない。
メソッドの定義方法
StringBuilder sb = new StringBuilder();
sb.append("SELECT * FROM employee");
sb.append("WHERE empno = ' ");
sb.append(emplo);
sb.append("';'");
System.out.println(sb);
//実行結果
SELECT * FROM employeeWHERE empno = ' emplo;
reverseメソッド
このメソッドは、文字列を反転させるメソッド。
メソッドの定義方法
StringBuilder sb = new StringBuilder("abcde");
sb.reverce();
System.out.println(sb);
//実行結果
edcba
internメソッド
このメソッドは、コンスタントプールを含むメモリ内の文字列を探して、再利用するメソッド。同じ文字列が存在しない場合は新たに文字列を生成する。
メソッドの定義方法
String str1 = new("def");
String str2 = new("def");
System.out.println(str1.intern() == str2.intern());
//実行結果
true