谁能给我解释下程序中的this是干什么的?
class Person{
public String getInfo(){
System.out.println("Person类-->" + 
this);        
return null;
}
}
public class ThisDemo06{
public static void main(String[] args){
Person per1 = new Person();
Person per2 = new Person();
System.out.println("MAIN方法-->" + per1);
per1.getInfo();
System.out.println("--------------------");
System.out.println("MAIN方法-->" + per2);
per2.getInfo();
}
}
------解决方案--------------------Java中this有三种情况:
1.指当前对象;
2.在一个构造器中调用另一个构造器,this(……)根据括号中的参数判断调用哪个构造器,这个必须放在构造器方法的第一行;
3.调用该对象成员变量。
你的代码中属于第一种,就是指当前的对象。
per1调用就是指per1对象,per2调用就是指per2对象!
此处会把改对象打印出来!
------解决方案--------------------
public class Person {
	public String getInfo() {
		return "Person类" + this;
	}
	public static void main(String[] args) {
		Person per = new Person();
		System.out.println(per.getInfo());
	}
}
打印的结果是:Person类com.ok.thisok.Person@18a992f
this有三种用法:  
 1.对当前对象的引用
 2.表示用类的成员变量而非函数参数,注意在函数参数和成员变量同名时区分!其实这是第一一种用法的特例。
 3.用于构造方法中用于引用满足指定参数类型的构造器,需要注意的是只能引用一个构造方法且必须位于首位。
 public class ThisTest {
	private int i = 0;
	// 第一个构造器有一个int 型形参
	ThisTest(int i) {
		this.i = i + 1; // 此时this是引用了成员变量i而并非是函数的参数i
		System.out
				.println("Int construtor i-----this.i:" + i + "----" + this.i);
		System.out.println("i-1:" + (i - 1) + "this.i+1" + (this.i + 1));
	}
	// 第二个构造器
	ThisTest(String s) {
		System.out.println("String constructor" + s);
	}
	// 第三个构造器
	ThisTest(int i, String s) {
		this(s);// this调用的二个构造器
		this.i = i++;
		System.out.println("Int construtctor" + i + "String constratctor" + s);
	}
      //普通的方法
	public ThisTest increment() {
		this.i++;
		return this;
	}	
	//买你方法
	public static void main(String[] args) {
		ThisTest  tt0=new ThisTest(10);
		ThisTest  tt1=new  ThisTest("Hello");
		ThisTest  tt2=new ThisTest(20,"Hello agin");
		System.out.println(tt0.increment().increment().increment().i);
	}
------解决方案--------------------其实this在每一个地方都有不同的意义,具体分类。
1、“本身”(一般情况都是只本身的类,比如变量名重复了,可以使用这样来进行区分)
2、“调用此方法的调用类”(两个不同类进行跨越方法调用时,被调用的方法就会将this指向调用它的类)
3、“指向所继承父类”(在构造方法中发生,当有继承才会有此效果)