用this关键字的三种情况:
1. 使用this调用成员变量或成员函数,this代表的是调用该成员变量或函数的对象。
如果我们想通过构造函数将外部传入的参数赋值给类的成员变量,构造函数的形式参数名称与类的成员变量名相同。例如:
class Person
{
String name;
public Person(String name)
{
this.name = name;
}
}
class Person p1 = new Person("张三");
System.out.println("my name is " + p1.name);
此时成员变量name的值为“张三”。
2. 使用this调用构造函数
构造方法是在产生对象时被java系统自动调用的,我们不能再程序中像调用其他方法一样去调用构造方法。但我们可以在一个构造方法里调用其他重载的构造方法,不是用构造方法名,而是用this(参数列表)的形式,根据其中的参数列表,选择相应的构造方法。例如
public class Person
{
String name;
int age;
public Person(String name)
{
this.name = name;
}
public Person(String name,int age)
{
this(name);
this.age = age;
}
}
需要注意的是,所以使用this调用别的构造函数必须是重载的构造函数的第一个语句。
class Person
{
String name;
public Person(String name)
{
this.name = name;
}
}

class Person p1 = new Person("张三");
System.out.println("my name is " + p1.name);
此时成员变量name的值为“张三”。
2. 使用this调用构造函数
构造方法是在产生对象时被java系统自动调用的,我们不能再程序中像调用其他方法一样去调用构造方法。但我们可以在一个构造方法里调用其他重载的构造方法,不是用构造方法名,而是用this(参数列表)的形式,根据其中的参数列表,选择相应的构造方法。例如

{
String name;
int age;
public Person(String name)
{
this.name = name;
}
public Person(String name,int age)
{
this(name);
this.age = age;
}
}
需要注意的是,所以使用this调用别的构造函数必须是重载的构造函数的第一个语句。

3.使用this作为构造函数的参数。
假设有一个容器类和一个部件类,在容器类的某个成员函数中要创建部件类对象,而部件类的构造函数要需要一个代表其所在容器的参数。例如:
class Container
{
Component comp;
public void addComponent()
{
comp = new Component(this);
}
}
class Component
{
Container myContainer;
public Component(Container c)
{
myContainer = c;
}
}