this关键字

【this关键字】this关键字,只能在方法的内部使用,表示的是调用这个方法的那个对象的引用,this关键字的使用和平时new出来的对象引用的使用没什么区别。
需要注意的是,如果是在方法内部调用同一个类的另一个方法,就不用使用this关键字了。直接调用方法就行,因为即使你不写,编译器会自动帮你加上this关键字,但是你写的话也不会出错。
this关键字的使用时机是,只有当有明确要求指出要得到调用当前方法的这个引用的时候,方使用this关键字。

public class demo04 { public static void main(String[] args) { new Person().eat(new Apple()); } }/** * 人类: * 人有一个动作,吃,吃的时候传入一个苹果 */ class Person { public void eat(Apple apple) { Apple peeled = apple.getPeeler(); System.out.println("yummy"); } }/** * 削皮机:传入一个苹果就可把这个苹果削皮 */ class Peeler { static Apple peel(Apple apple) { return apple; } }/** * 苹果类:假如由于某种特别的原因,削皮这个操作不能再削皮机这个类中完成, * 只能在苹果类中调用削皮机,这个时候,可以通过this关键字,把自己的apple * 实例,传入到削皮机的方法中 */ class Apple { Apple getPeeler() { return Peeler.peel(this); } }

上面的代码演示了,this关键字将当前对象传递给其它方法。
对于this关键字的核心理解很简单,其实当使用一个方法的时候,我们如果想知道,到底是谁使用了这个方法,那么我们就可以用this关键字,把这个对象召唤出来。
public class demo5 { public static void main(String[] args) { Student liming = new Student("黎明"); System.out.println(liming); } }class Student{ private String name; public Student(String name) { this.name = name; System.out.println(this); } }

上面的代码我们做了一个实验,创建了一个学生类,重写了他的构造器,我们在构造器中打印了this关键字,并在main方法中打印了通过new创建出来的实例对象,看看这个this关键字和通过new出来的实例对象的引用liming,他们是不是指向同一个实例。
test_startic.Student@4554617c
test_startic.Student@4554617c
通过控制台的打印,我们看出来,他们的地址实际上是一摸一样的。也就是说,this关键字,指向的东西,就是new出来的那个对象。他们两个是同一个东西两种不同存在形式。

    推荐阅读