**今天在使用Person类进行方法的调用时,产生了年龄显示的问题。不管如何输出年龄,但在属性值
age不发生任何改变。说了这么多,读者很产生直观印象,我现在放入代码,大家可以思考的看看。
public class person {
String name;
int age;
int sex;
void study() {
System.out.println("我在学习中。。。。。。。。。。。。。");
}
void showAge() {
System.out.println("他的年龄为"+age);
}
public void addAge(int age) {
age=age+1;
}
}
public class test {
public static void main(String[] args) {
person per=new person();
per.name="wang";
per.age=20;
per.study();
per.addAge(4);
per.showAge();
}
}
我们看完代码,看到我们在年龄的addAge()方法中输入的是4。我们根据寻回进行去看,在person中看到
public void addAge(int age) {
age=age+1;
}
我们输入的是4,那么输出的值应该是5,但结果一直输出的是20。
请思考,为什么输出的不是5呢?
1.我们看了代码,感觉是showAge出问题了,可是对他 进行替换,也无法改变20。当我们在观察 成员变量的实行设定时:
int age;
per.age=20;
我们可以看到age很早之前已定定义了,我们在方法addAge的形参中,还是用的是int age,这就是问题出错的原因 ,他不能对成员的age进行屏蔽,也无法对其进行改变,这是java先行性的问题。
下次编程,我们应该注意这个问题。