Java的this关键字

含义


在《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

这种方式有三个值得注意的地方。

  • 构造器中只能调用一个构造器
  • 构造器的调用必须放在最开始
  • 只有构造器可以调用其他构造器

你可能感兴趣的