this关键字是Java语言里一个比较灵活而又复杂的语法,这里和String一样,也单独罗列出来做一节.
this关键字的使用环境:
1. 可以调用本类中的方法.
这个方法可以使类里面的一般方法, 也可以使构造函数.
对于一般方法的调用,之前就已经碰到过了,比较熟悉,直接用this.function()即可.
对于在构造函数中使用this关键字有需要注意的地方.在构造函数中,使用this()语句(注意this后带括号)调用的是无参的构造函数.在构造函数中使用this()语句,this()语句必须放置在构造方法的首行, 且多个构造函数中必须至少留有一个入口,就是说至少要有一个未使用this()方法的构造函数.
这里举个例子:
class Person
{
// 定义类"Person"的属性
String name;
int age;
//定义构造函数
public Person()
{
//this()语句必须放置在构造函数的首行,且多个构造函数必须留有一个入口
this("张三",23);
System.out.println("构造了一个新的对象!");
}
public Person(String name,int age)
{
//如果是由构造函数为属性赋值的话,最好也是使用getter和seter方法
this.name = name;
this.age = age;
}
public void print()
{
System.out.println("姓名是: "+name + ", 年龄是: "+age);
}
}
public class OODemo03
{
public static void main(String args[])
{
Person p = new Person();
p.print();
}
}
2. 调用当前类中的属性
这个比第一种更常见,例如在上面的程序中, this.name = name; this.age = age 都是用过this关键字来调用当前类中的属性, 实例见上面代码中重载的构造函数.
3. 可以表示当前对象
其实在第二种"调用当前类中的属性"一块中, 我们就可以把this当做是在表示当前的对象. 用this表示当前对象,谁调用了这个方法,则this就表示谁.
class Person
{
// 谁操作了这个方法,则this就表示是谁
public void print()
{
System.out.println("this表示:"+this) ;
}
}
public class Demo08
{
public static void main(String args[])
{
Person p1 = new Person();
Person p2 = new Person();
p1.print() ;
System.out.println(p1) ;
System.out.println("-------------------------") ;
p2.print() ;
System.out.println(p2) ;
}
}