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先行性的问题。 下次编程,我们应该注意这个问题。