JavaのString型について
- String型とは
- Stringの作成方法
- Stringの不変性(Immutability)
- Stringの連結
- 主なStringメソッド
- Stringの比較
- StringBuilderとStringBuffer
- Stringプールについて
String型とは
JavaのString
型は、文字列を扱うためのクラスです。Javaでは、文字列はオブジェクトとして扱われます。String
はJavaの標準ライブラリに含まれており、java.lang.String
パッケージにあります。
JavaのString
型は一度作成されると変更できない「不変オブジェクト(Immutable Object)」です。
基本的な文字列の作成例:
String greeting = "Hello, World!";
System.out.println(greeting); // 出力: Hello, World!
Stringの作成方法
Javaで文字列を作成する方法は主に2つあります:
リテラルを使う
最も一般的な方法です。
String str1 = "Hello";
コンストラクタを使う
new
キーワードを使って明示的にインスタンスを作成します。
String str2 = new String("Hello");
文字の配列から作成することもできます:
char[] chars = {'J', 'a', 'v', 'a'};
String str3 = new String(chars);
System.out.println(str3); // 出力: Java
Stringの不変性(Immutability)
JavaのString
は不変(Immutable)です。つまり、String
オブジェクトが作成された後は、その内容を変更することはできません。
例えば、次のコードは新しいString
オブジェクトを作成します:
String str = "Hello";
str = str + " World";
System.out.println(str); // 出力: Hello World
ここでstr
が変更されたように見えますが、実際には新しいString
オブジェクトが作成され、その参照がstr
に代入されています。
Stringの連結
文字列の連結にはいくつかの方法があります:
+ 演算子を使う
String firstName = "John";
String lastName = "Doe";
String fullName = firstName + " " + lastName;
System.out.println(fullName); // 出力: John Doe
concat()メソッドを使う
String str1 = "Hello";
String str2 = "World";
String result = str1.concat(" ").concat(str2);
System.out.println(result); // 出力: Hello World
主なStringメソッド
JavaのString
クラスには多くの便利なメソッドが用意されています。
length()
String str = "Hello";
System.out.println(str.length()); // 出力: 5
toUpperCase() と toLowerCase()
String str = "Hello";
System.out.println(str.toUpperCase()); // 出力: HELLO
System.out.println(str.toLowerCase()); // 出力: hello
substring()
String str = "Hello, World!";
System.out.println(str.substring(7)); // 出力: World!
System.out.println(str.substring(0, 5)); // 出力: Hello
replace()
String str = "Java is fun";
System.out.println(str.replace("fun", "awesome")); // 出力: Java is awesome
split()
String str = "apple,banana,orange";
String[] fruits = str.split(",");
for (String fruit : fruits) {
System.out.println(fruit);
}
// 出力:
// apple
// banana
// orange
Stringの比較
Javaで文字列を比較する方法には、以下の2つがあります:
== 演算子
参照が同じオブジェクトを指しているかを比較します。
String str1 = "Hello";
String str2 = "Hello";
System.out.println(str1 == str2); // 出力: true
equals()メソッド
文字列の内容を比較します。
String str1 = new String("Hello");
String str2 = new String("Hello");
System.out.println(str1.equals(str2)); // 出力: true
StringBuilderとStringBuffer
String
が不変であるのに対し、StringBuilder
とStringBuffer
は変更可能な文字列を扱うためのクラスです。
StringBuilder
StringBuilder sb = new StringBuilder("Hello");
sb.append(" World");
System.out.println(sb.toString()); // 出力: Hello World
StringBuffer
StringBuffer
はスレッドセーフで、複数のスレッドから同時にアクセスされる場合に使用します。
StringBuffer sb = new StringBuffer("Hello");
sb.append(" World");
System.out.println(sb.toString()); // 出力: Hello World
Stringプールについて
Javaでは、同じ内容の文字列が重複しないように、文字列リテラルは「Stringプール」と呼ばれる領域に格納されます。
String str1 = "Hello";
String str2 = "Hello";
System.out.println(str1 == str2); // 出力: true
上記の例では、str1
とstr2
は同じ"Hello"
を参照しています。