Итак, чтобы ответить на ваши вопросы, вы сначала должны знать, как Java передает переменные.
переменная имеет значение:
int i = 1234;
Person p = new Person("Peter");
Теперь переменная i содержит ровно 1234,в то время как переменная p содержит адрес памяти созданного персонажа.
, поэтому в i содержится 1234, а p содержит адрес (скажем, a4dfi3).
anyMethodYouLike(p);
System.out.println(p.getName());
public void anyMethodYouLike(Person somePerson) {
somePerson.rename("Homer");
}
, поэтому в этом примере мы даемМетод anyMethodYouLike Переменная p ... подождите!мы даем методу значение переменной (a4dfi3).Затем метод вызывает метод переименования для этой переменной (которая по-прежнему имеет тот же адрес, что и p, поэтому он изменяет тот же объект Person, на который указывает p).Итак, после того, как Метод, Имя Человека, на которое указывает р, печатается, в результате получается «Гомер».
someOtherMethod(p);
System.out.println(p.getName());
public void someOtherMethod(Person somePerson) {
somePerson = new Person("Walter");
}
В ЭТОМ примере мы все еще даем адрес нашего Человека, называемого «Петр»,метод.Но на этот раз Метод создает нового Person в somePerson (поэтому переопределяет адрес в somePerson на ... скажем, 13n37s. НО! Человек в a4dfi3 не изменился! При вызове print по-прежнему выводится "Peter", а не "Walter".
Теперь давайте посмотрим, как это происходит с примитивами:
someMethod(i);
System.out.println(i);
public void someMethod(int someInt) {
someInt++;
}
Итак, значение i (1234) передается someInteger. Затем someInteger увеличивается до 1235. Но япо-прежнему 1234.
Это большая разница между объектами и примитивами в Java.
Надеюсь, я смогу помочь, Ferdi265