008 メソッド (参照型の引数を持つメソッド)017 解答例

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 メソッドが新しい文字列を生成して返すようになっています。呼び出し元で元の文字列が変更されないことが確認できます。

新しい文字列を生成することで、元の文字列を変更せずに処理を行うことができます。このアプローチは安全であり、イミュータブル性を維持する上で重要です。

「008 メソッド」問題集リスト