「こんにちは、アミーゴ!」

「しかし、ビラーボ、あなたはもう挨拶しましたね。」

「そうですか?そうですね、私は今でも毎回のレッスンをそのフレーズで始めるのが好きです。」

「今日は String クラスを詳しく学習します。」

「しかし、私はそれについてすでにすべてを知っています。String クラスが不変であることさえ知っています。」

「String クラスには 46 個のメソッドがあります。そのうちいくつ知っていますか?」

「10人以下ですよ。実際は5人くらいでしょうね。」

「それでは聞いてください。」

「Java の作成者は、プログラム内のほとんどの文字列は変更されることを意図していないことに気づきましたが、場合によっては変更されてしまうことがあります。文字列を作成し、その中に重要なものを保存し、それを他の人のメソッドに渡すと、変更されてしまうのは非常に面倒です」これを防ぐために、変更可能な文字列と不変の文字列の両方を作成することにしました。」

「String クラスは不変文字列用であり、StringBuilderクラスは変更可能な文字列用です。これらのクラスのオブジェクトは他の型に簡単に変換できます。ほとんどの場合、Java 開発者は単に String を必要とします。これは Java の作成者が正しかったことを証明しています。」

「では、String が必要な場合は String クラスを使用します。また、変更可能な String が必要な場合は StringBuilderクラスを使用します。」

「はい。実際には、StringBuffer という別のクラスがあります。これは StringBuilder のコピーですが、そのすべてのメソッドがsynchronizedとして宣言されているため、プログラムの別のスレッドからオブジェクトにアクセスできます。」

「では、この例はどうでしょうか? ここで文字列は変更されませんか?」

String s = "cat";
s = s + "-" + s;

「いいえ。ここには «cat» と «cat-cat» という 2 つの String オブジェクトがあります。2 つ目は最初のオブジェクトを使用して作成されますが、最初のオブジェクトは変更されません。実際には、ここで物事ははるかに興味深いものになります。コードは次のとおりです。コンパイラは例をコンパイルするときに次の情報を生成します。」

String s = "cat";
StrinsBuilder s2 = new StringBuilder(s);
s2.append("-");
s2.append(s);
s = s2.toString();

「つまり、StringBuilder は、ほとんどの場合、新しい String を作成するために使用されますが、場合によっては、コンパイラがすべての作業を自動的に実行することもあります。しかし、あなたのバージョンの方が単純だと思いませんか?」

「そうですね、Java にこれほど高度なコンパイラがあるのは素晴らしいことです。」

「それでは、String クラスのメソッドを見ていきましょう。」

1) 文字列の長さを調べるにはどうすればよいですか?

lengthメソッドは String の長さ (文字列内の文字数) を返します。」

方法
int length();
String s = "Good news, everyone!";
int n = s.length();
int n = "Good news, everyone!".length();

2) 文字列から文字を取得するにはどうすればよいですか?

charAtメソッドは、インデックスによって String から文字を返します。文字インデックスは 0 から始まります。

方法
char charAt(int index)
String s = "Good news, everyone!";
char n = s.charAt(5);
char n = "Good news, everyone!".charAt(5);

3) 文字列から文字を取得するにはどうすればよいですか?

文字列から文字を取得するにはどうすればよいですか?

方法
char[]toCharArray ()
String s = "Good news, everyone!";
for(char c: s.toCharArray())
{
System.out.println(c);
}

4) 文字列を比較するにはどうすればよいですか?

「equals メソッドは文字列が一致するかどうかをチェックし、equalsIgnoreCaseメソッドは大文字と小文字を無視して文字列が一致するかどうかをチェックします。

方法 方法
boolean equals(Object o)
String s = "cat";
boolean test1 = s.equals("cat");//true
boolean test2 = s.equals("Cat");//false
boolean test3 = s.equals("c"+"a"+"t");//true
boolean equalsIgnoreCase(String str)
String s = "cat";
boolean test1 = s.equalsIgnoreCase("cat");//true
boolean test2 = s.equalsIgnoreCase("Cat");//true
boolean test3 = s.equalsIgnoreCase("cAT");//true

5) 文字列内のすべての文字を大文字または小文字にするにはどうすればよいですか?

toUpperCaseメソッドは、すべて大文字の String のコピーを返します。」

toLowerCaseメソッドは、すべて小文字の String のコピーを返します。」

方法
String toUpperCase()
String s = " Good news, everyone!  ";
s = s.toUpperCase();

結果:

s == "GOOD NEWS, EVERYONE!";
String toLowerCase()
String s = "Good news, everyone!";
s = s.toLowerCase();

結果:

s == "good news, everyone!";

6) 文字列の先頭と末尾にあるスペースを削除するにはどうすればよいですか?

「trim メソッドは、先頭と末尾に空白文字を含まない String のコピーを返します。」

方法
String trim()
String s = "   Good news, everyone!   ";
s = s.trim();

結果:

s == "Good news, everyone!";