含义
在《Thinking in Java》中写到
this关键字(注意只能在方法内部使用)可为已调用其方法的那个对象生成相应的句柄。可像对待其他任何对象句柄一样对待这个句柄。但要注意,假若从自己的某个类中的另一个方法内部调用一个类方法,就不必使用this
我们知道,Java对对象进行操作实际上是对他们的句柄进行操作,而this关键字用来选中调用该方法的实例。
这样做有许多作用。
作用
区别同名同传入参数和类的属性
public class Name{
private String name;
public void setName(String name){
this.name = name;
}
}
这是一个简单的setter,用来修改类中私有属性的值。通过this关键字,Name类中的name和传入的name被区分开。
通过返回自身对象实现一条语句连续调用方法进行操作
这是《Thinking in Java》中的例子。
public class Number{
private int i = 0;
Number increment(){
i++;
return this;
}
void print(){
System.out.println("i = " + i);
}
public static void main(String[] args){
Number n = new Number();
n.increment().increment().increment().print();
}
}
运行该程序会打印出3。方便地对同一个对象进行了多次操作。
在构造器中调用构造器
通过this(/*possible params*/)可以在一个构造器中调用另一个构造器。
public class Person{
private String firstName;
private String lastName;
public Person(String s){
firstName = s;
}
public Person(String fn, String ln){
this(fn);
lastName = ln;
}
public void print(){
System.out.println(firstName + lastName);
}
public static void main(String[] args){
Person p = new Person("Madoka","Kaname");
p.print();
}
}
运行可以输出
MadokaKaname
这种方式有三个值得注意的地方。
- 构造器中只能调用一个构造器
- 构造器的调用必须放在最开始
- 只有构造器可以调用其他构造器