Java教程
Java标识符与关键字
Java变量
Java数据类型
Java运算符
Java控制语句
Java方法
Java面向对象
Java对象的创建和使用
Java封装
Java中static和this
Java继承
Java方法覆盖和多态
Java super
Java基础练习题

Java中this关键字是什么

本章节目标:
理解this是什么,this能用在哪里,不能用在哪里,this什么时候可以省略,什么时候不能省略,以及怎么通过构造方法调用当前类中其它的构造方法。掌握静态代码块的执行时机,变量什么时候声明为静态变量,什么时候声明为实例变量,方法什么时候声明为实例方法,什么时候声明为静态方法,以及静态方法中为何不能直接访问实例变量和实例方法。
知识框架:

this是什么
this是java语言中的一个关键字,它存储在内存的什么地方呢,一起来看一段程序:

public class Customer {
	private String name;
	public Customer(){
	}
	public Customer(String _name){
		name = _name;
	}
	public void setName(String _name){
		name = _name;
	}
	public String getName(){
		return name;
	}
}
public class CustomerTest {
	public static void main(String[] args) {
		Customer jack = new Customer("jack");
		Customer rose = new Customer("rose");
	}
}

以上程序的内存结构图如下所示:

图11-1:this内存图

this可以看做一个变量,它是一个引用,存储在Java虚拟机堆内存的对象内部,this这个引用保存了当前对象的内存地址指向自身,任何一个堆内存的java对象都有一个this,也就是说创建100个java对象则分别对应100个this。通过以上的内存图,可以看出“jack引用”保存的内存地址是0x1111,对应的“this引用”保存的内存地址也是0x1111,所以“jack引用”和“this引用”是可以划等号的。也就是说访问对象的时候jack.name和this.name是一样的,都是访问该引用所指向对象的name属性。
this指向“当前对象”,也可以说this代表“当前对象”,this可以使用在实例方法中以及构造方法中,语法格式分别为“this.”和“this(..)”。this不能出现在带有static的方法当中。