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出来的那个对象。他们两个是同一个东西两种不同存在形式。
推荐阅读
- 宽容谁
- 我要做大厨
- 增长黑客的海盗法则
- 画画吗()
- 2019-02-13——今天谈梦想()
- 远去的风筝
- 三十年后的广场舞大爷
- 叙述作文
- 20190302|20190302 复盘翻盘
- 学无止境,人生还很长