Просто для любой будущей ссылки, принятый ответ не является правильным ответом в этом случае (хотя ссылки предоставляют достаточно информации, чтобы получить правильный ответ). Проблема OP не имеет ничего общего с примитивами против объектов. В приведенном коде экзамена нет используемых примитивов, и целое число, и персона являются полными объектами. Ответы ниже этого ответа более полезны. Ключ в том, что переменной параметра (то есть переменной, используемой для хранения переданного параметра в методах) присваивается текущее значение переменной, используемой в вызове метода. Объекты хранятся по ссылке в Java, поэтому они указывают на объект, а не хранят объект напрямую. Таким образом, переменная параметра в методе получает этот адрес указателя и использует его для доступа к деталям объекта. Таким образом, если метод изменяет объект, это тот же объект, на который указывает вызывающий код, и поэтому оба места увидят это изменение. В целочисленном примере, когда вы говорите, что integer = 1000, он перезаписывает переданный указатель новым указателем на новый объект Integer - вы потеряли соединение с исходным объектом.
Обратите внимание, что невозможно изменить объект Integer после того, как он был создан (например, нет .setValue () метод), поэтому невозможно написать код способом, который мог бы изменить исходный объект Integer.