в этом коде
Почему это отпечатки >> 0 8 вместо >> 5 8. Метод doIt()
изменяет количество выделенного Person, которое уже выделено, но int x уже выделен и не изменен в doIt()
. Может ли кто-нибудь дать мне теоретическое объяснение? Я пытаюсь понять, как это работает. Спасибо.Значения атрибутов объекта изменения Java
class Person{
int number=0;
}
class Student extends Person
{
int studentNumber;
}
public class Prog{
public void doIt(int x, Person p)
{
x=5;
p.number=8;
}
public static void main(String[] args) {
Prog p = new Prog();
p.test();
}
public void test()
{
int x=0;
Person p = new Person();
doIt(x,p);
System.out.println(x);
System.out.println(p.number);
}
}
Таким образом, в случае, если x является копией, а p является реальным объектом, поскольку x является примитивным, а Person p не является? –
Закрыть. В 'doIt',' x' является копией 'x' в' test'. 'p' - тоже копия. Но это копия объекта _reference_. Таким образом, обе переменные 'p' в' doIt' и 'test' относятся к одному и только к объекту Person. – rgettman
Отлично! Большое спасибо! Я больше привык к C++, где я могу указать copys, ссылки .. –