Przypisanie wartości do zmiennej

0

Jest taki kod:

public class Klasa1 
{
    public static void main(String [] args) 
    {
        Klasa1 p = new Klasa1();
        p.start();
    }

    void start() 
    {
        String s1 = "Kawa";
        String s2 = fix(s1);
        System.out.println(s1 + " " + s2);
    }

    String fix(String s1) 
    {
        s1 = s1 + "herbata";
        System.out.print(s1 + " ");
        return "herbata";
    }
}

proszę o wyjaśnienie, dlaczego na wyjściu otrzymuję wynik: "Kawaherbata Kawa herbata"? Dlaczego zmiennej s1 w metodzie start() nie przypisano nowej wartości Kawaherbata, tylko została Kawa?

0

Bo stringi w są immutable, więc każda zmiana stringa powoduje utworzenie nowego stringa. No i oczywiście masz tu przecież kopie referencji więc jak przypiszesz nowy obiekt do referencji która jest argumentem funkcji to poza tą funkcją ta zmiana nie będzie widoczna.

1 użytkowników online, w tym zalogowanych: 0, gości: 1