案例引入
在对象类的代码中
public class Student {
String name;
private int age;
public void setAge(int age){
age = age;
}
public int getAge(){
return age;
}
public void study(){
System.out.println("学习");
}
public void doHomeword(){
System.out.println("做作业");
}
}
如果setAge()中的形参和用户变量同名会发生什么呢?
下面展示一些 测试类代码
。
package THIS;
public class StudentCase {
public static void main(String[] args) {
THIS.Student s = new THIS.Student();
s.name = "小明";
s.setAge(30);
s.study();
s.doHomeword();
System.out.println(s.name + "-------" + s.getAge());
}
}
执行结果
emm…并没有成功赋值,这是为什么呢????
分析原因
这是因为在方法setAge里面两个age都是局部变量,所以没有成功赋值到用户变量age中。
那么该如何告诉计算机第一个的age是用户变量,而第二个age是局部变量呢??
解决方法
引入this关键词
在对象代码中,setAge中第一个age前面加一个this,告诉计算机,第一个age是用户变量
package THIS;
public class Student {
String name;
private int age;
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
public void study(){
System.out.println("学习");
}
public void doHomeword(){
System.out.println("做作业");
}
}
我们再次执行程序
可以看到30已经成功赋值给用户变量age了