看到成员变量和局部变量同名这个知识点的时候一开始有点懵逼,想了一下其实特别简单。先来看一个简单的代码。首先我定义了一个Person类。public class Person {private int age=1000;//定义成员变量,年龄为1000public void setAge(int age) {age=age;System.out.println("方法内的年龄"+age);}public void sayHello() {System.out.println("我的年龄是"+age+".");}}然后在主函数里面创建对象并输出。Person p=new Person();p.setAge(20);p.sayHello();输出结果是什么?并不是我们想象的我的年龄是20,而是下面这样://方法内的年龄20//我的年龄是1000.想一下其实就很容易理解。一句话,如果不同名,那么方法内的变量名代表成员变量;如果同名,那么方法内的变量名就只表示局部变量了,和成员变量一毛钱关系都没有了。所以,首先当我们创建了一个Person对象p,在创建对象的时候就已经完成了成员变量的初始化了。成员变量age的初始值是1000。当我们p.setAge(20)的时候,其实这个20只在setAge这个方法内起作用,所以输出了方法内年龄20,执行完这句话后,20就被销毁了。然后执行sayHello,它里面的age代表的是成员变量的值,所以依旧是1000。到这里如果还是不能理解,可以自己写代码看输出结果体会下。那么,当同名的时候,我们就是要让这个变量名表示成员变量,有没有办法呢?那就要说到this关键字了。我们把Person类改成这样:public class Person {private int age=1000;public void setAge(int age) {this.age=age;System.out.println("方法内的年龄"+age);}public void sayHello() {System.out.println("我的年龄是"+age+".");}}再运行代码,发现代码运行结果变成了下面这样://方法内的年龄20//我的年龄是20.this表示的是当前对象。this.age在这里具体表示p对象的age(即p对象的成员变量age)的值是20。不能理解的话就多写写代码就能理解了。本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-07/133183.htm