Was passiert, wenn ein String-Literal geändert wird? [Duplikat

Diese Frage hat hier bereits eine Antwort:

Ist Java "Pass-by-Reference" oder "Pass-by-Value"? 78 answerstoUpperCase in Java funktioniert nicht 5 Antworten

Ich möchte ein String-Literal in Großbuchstaben ändern. Hier ist mein Code:

    // a and b are the same literal 
    String a = "Test";
    String b = "Test";
    // now I want to change all b's letter 
    // into uppercases, but fail.
    b.toUpperCase();
    System.out.println("a = " + a + ", " + "b = " + b);
    // print: a = Test, b = Test

    String c = "Test1";
    System.out.println("c = " + c + " , c.toUpperCase() = "
                + c.toUpperCase());
    // print: c = Test1 , c.toUpperCase() = TEST1

    // change letters of "Test" literal 
    // into uppercase and success
    System.out.println("Test".toUpperCase());
    // print: TEST

Meine Frage ist: 1.b kann nicht in Großbuchstaben geändert werden, aberc und"Test" können. Warum

Was ich weiß ist: 1.a undb Verweis auf dasselbe Objekt im String-Pool. 2. Die Zeichenfolge ist unveränderlich, scheint jedoch für diese Frage nicht relevant zu sein.

Antworten auf die Frage(14)

Ihre Antwort auf die Frage