1.this是什么?

this是一个引用类型,在堆中的每一个java对象上都有this,this保存内存地址指向自身。

2.this能用在哪些地方?

第一:this可以用在成员方法中.

第二:this可以用在构造方法中.

语法:this(实参);

通过一个构造方法去调用另一个构造方法。

目的:代码重用。

this(实参);必须出现在构造方法的第一行

第三:this不能用在静态方法中。静态方法的执行不需要java对象的存在,直接使用"类名."的方式去访问,this代表的是当前对象,所有不用用在静态方法中。

class MyDate{		//Field	int year;	int month;	int day;		//Constructor	//需求:在创建日期对象的时候,默认的日期是:1970-1-1	MyDate(){		this(1970,1,1);		/*		this.year = 1970;		this.month = 1;		this.day = 1;		*/	}		MyDate(int _year,int _month,int _day){		year = _year;		month = _month;		day = _day;	}
/*	this能用在成员方法中。		this就是当前对象.*/public class ThisTest02{		public static void main(String[] args){				//创建对象		Employee e = new Employee(7369,"SMITH");				//工作		e.work();		//创建对象		Employee e1 = new Employee(7370,"FORD");		//工作		e1.work();				e.m1();			}	}class Employee{		//员工编号	int empno;		//员工名	String ename;		//Constructor	Employee(){}		Employee(int _empno,String _ename){		empno = _empno;		ename = _ename;	}		//提供一个员工工作的方法.	//this用在成员方法中,谁去调用这个成员方法,this就代表谁。	//this指的就是当前对象。	public void work(){		System.out.println(this.ename + "在工作");		//System.out.println(ename + "在工作"); //this. 可以省略	}		//成员方法	public void m1(){		this.m2();		m2();	}		//成员方法	public void m2(){		System.out.println("TESTING");	}	}

注意:this不能用在静态方法中。

/*	this不能用在静态方法中.		静态方法的执行根本不需要java对象的存在。直接使用“类名.”的方式访问。		而this代表的是当前对象。所以静态方法中根本没有this*/public class ThisTest04{	String str;	//入口	public static void main(String[] args){				Person.m1();				//str是一个成员变量,必须由  引用.   访问		//System.out.println(str);						ThisTest04 tt = new ThisTest04();		System.out.println(tt.str); //null			}	}class Person{		//Field	String name;		//Constructor	Person(){}		Person(String name){		this.name = name;	}		//静态方法	public static void m1(){				//System.out.println(this.name);				//如果要想访问name只能:		Person p1 = new Person("刘德华");		System.out.println(p1.name);	}	}