public class StringManipulator {
public static String reverseString(String input) {
// StringBuilder を使用して文字列を逆順に変更
StringBuilder reversed = new StringBuilder(input);
reversed.reverse();
return reversed.toString();
}
public static void main(String[] args) {
// メソッドの使用例
String original = "Hello, Java!";
String reversed = reverseString(original);
System.out.println("Original: " + original);
System.out.println("Reversed: " + reversed);
}
}
この例では、reverseString
メソッドが StringBuilder
を使用して与えられた文字列を逆順に変更し、その結果を返しています。main
メソッドでは、このメソッドを使用して文字列を逆順に変更しています。プログラムを実行すると、元の文字列と逆順に変更された文字列が表示されます。
参照渡しされた文字列の変更(はできない)
Javaにおいて文字列はイミュータブル(不変)であるため、メソッドに渡された文字列を直接変更することはできません。しかし、新しい文字列を生成してそれを返すことで、元の文字列を変更するような効果を得ることができます。
以下に、新しい文字列を生成して返す方法を具体的なコード例とともに解説します。
public class StringModifier {
// 文字列にサフィックスを追加して新しい文字列を返すメソッド
public static String addSuffix(String input, String suffix) {
// 新しい文字列を生成して返す
return input + suffix;
}
// 文字列を大文字に変換して新しい文字列を返すメソッド
public static String capitalize(String input) {
// 新しい文字列を生成して返す
return input.toUpperCase();
}
public static void main(String[] args) {
// 使用例
String original = "example";
String modified1 = addSuffix(original, "_suffix");
String modified2 = capitalize(original);
// 元の文字列は変更されず、新しい文字列が生成されている
System.out.println("Original: " + original);
System.out.println("Modified 1: " + modified1);
System.out.println("Modified 2: " + modified2);
}
}
この例では、addSuffix
メソッドと capitalize
メソッドが新しい文字列を生成して返すようになっています。呼び出し元で元の文字列が変更されないことが確認できます。
新しい文字列を生成することで、元の文字列を変更せずに処理を行うことができます。このアプローチは安全であり、イミュータブル性を維持する上で重要です。