Неизменный и передать по значению

У меня есть следующий код, который имеет
изменяемый класс Person, String и метод для изменения экземпляров String и Person

    class Person{

int a = 8;

public int getA() {
    return a;
}

public void setA(int a) {
    this.a = a;
}

@Override
public String toString() {
    return "Person [a=" + a + "]";
}

  }

-

public class TestMutable {
public static void main(String[] args)
{
    Person p = new Person();
    p.setA(34);


    String s = "bar";

             modifyObject(s, p);   //Call to modify objects

    System.out.println(s);
    System.out.println(p);

}



private static void modifyObject(String str, Person p)
{

        str = "foo";
        p.setA(45);

}

  }

Вывод соответствует ожидаемому. Это печатает

           bar
          Person [a=45]

Теперь мой вопрос

Что происходит в том месте, где вы говорите str = "foo" ?

Сначала давайте предположим, что s = 'bar' и данные находятся в памяти 0x100.

Теперь ссылка на строку передается другому методу, другой метод пытается изменить содержимое ячейки памяти (0x100) на 'foo', используя s = "foo". Это то, что происходит, или «foo» создается в другом месте памяти?

Java передает ссылки по значению?

Ответы на вопрос(4)

Ваш ответ на вопрос