自己编写了一个小程序来说明一下this的用法 不一定正确,请大家指教
public class Person
{
private int age;
private String name;
public void setAge(int age)
{
this.age=age;
}
public int getAge()
{
return age;
}
public void setName(String newname)
{
name = newname;
}
public String getName()
{
return name;
}
}
public class TestPerson
{
public static void main(String[] args)
{
Person p1 = new Person();
Person p2 = new Person();
Person p3 = new Person();
p1.setAge(23);
p2.setAge(140);
p3.setAge(-11);
p1.setName("SHIYAN");
p2.setName("Lucy");
p3.setName("Nobody");
System.out.println(p1.getName()+" is "+p1.getAge());
System.out.println(p2.getName()+" is "+p2.getAge());
System.out.println(p3.getName()+" is "+p3.getAge());
}
}
这里面的setAge()和setName()功能是一样的,但是编写的方法不一样,如果我们将setAge()中的this去掉或将setName中的形参变量变为name在这时会出现
public void setX(int x)
{
x=x;
}
的形式。
可能我们觉得是正确的,但是因为变量的可见性,Person类的成员变量x在setX(int x,)这个方法中是不可见的,所以,我们实际上是将形参x的值赋给了形参x,根本没有给Person类的成员变量x进行赋值.。
this指针是一个隐含的指针,它是指向对象本身的,代表了对象的地址。
在方法接受形参x时,还接受Person的对象成员p1等的地址。这个地址被一个隐含的形参this指针所获取,它等同于执行this=&p1,所有对数据成员的访问都隐含地被加上了前缀this.。