Добрый день. Читал про вызов по значению и натолкнулся на два примера. 1-ый:
public class Application {
public static void main(String[] args) {
String[] x = {"A"};
String[] y = x;
x[0] = "B";
System.out.print(x[0] + " " + y[0]);
}
}
Тут вроде бы все понятно. Ссылка на строковый массив "y" будет совпадать со ссылкой на массив "x"и произойдет копирование и ответом будет "B B". Но вот второй пример:
public class Application {
public static void main(String[] args) {
String x = "A";
String y = x;
x = "B";
System.out.print(x + " " + y);
}
}
Здесь почему то ответ "B A", хотя я думал что правильный ответ будет "B B". Ход рассуждений был такой же как и в первом примере. Подскажите пожалуйста, что за подвох в этом примере ? Ведь String - это класс, а не тип в Java и в обоих примерах мы создаем экземпляр класса String.
![String[] x = {"A"};](../../images/edb3e792668594e00e86b24c60ac0f5c.webp)
![String[] y = x;](../../images/de9a2b9b83176034098eae6a6f35c93a.webp)
![x[0] = "B";](../../images/0564878db8628504f8800f6711860757.webp)


