Доброго времени суток.
Имеются два примера, в рамках которых мы работаем с копией int-переменной. В первом примере изменение копии int'а меняет исходный int:
class Person{
String name;
int age;
Person(String s, int i){
name = s;
age = i;
}
}
class Test{
public static void main(String args[]){
Person p1 = new Person("John", 22);
Person p2 = new Test().change(p1);
System.out.println(p1.name + " " + p1.age);
System.out.println(p2.name + " " + p2.age);
}
private Person change(Person p){
Person p2 = p;
p2.age = 25;
return p2;
}
}
Итоговый результат:
John 25
John 25
то есть теперь p1.age также указывает на '25'. Тем не менее, во втором случае:
class Test{
public static void main(String args[]){
int x = 10;
int y = new Test().change(x);
System.out.println(x);
System.out.println(y);
}
//В примере параметром метода является int x, что немного путает с толку. Может быть любой буквой.
int change(int x){
x = 12;
return x;
получаем итоговый результат:
10
12
то есть x по-прежнему указывает на '10'. С чем может быть связано такое различие?
Благодарю.