1-
this表示本类,调用此方法所指的对象
public class person {
int age = -1;
String name = "unknow";
public person() {
}
public person(String _name, int _age) // 构造方法2
{
name = _name;
age = _age;
}
public person(String _name) // 构造方法1
{
name = _name;
}
public void fun1() {
System.out.println(name);
}
public void fun2() {
person a2 = new person("a2");
a2.fun1();
this.fun1();
}
public static void main(String[] args) {
person a1 = new person("a1");
a1.fun2();
}
}
可看出this指向的是a1
通过a1.fun2()调用方法fun2,fun2方法里面创建了新对象a2
a2.fun1调用fun1打印出自己a2的name
this.fun1也是打印出this的name
而这个this并不是离this最近的a2,而是a1,this.fun1这个语句整体所在的方法fun2,调用fun2的是a1,则this是a1
2-
当参数名与属性名一样时也是this的用武之地
要么改变参数名
还有就是
this.name = name
3-
当构造方法参数不同时
//带一个参数的构造方法
public
Hero(String name){
System.out.println(
"一个参数的构造方法"
);
this
.name = name;
}
//带两个参数的构造方法
public
Hero(String name,
float
hp){
this
(name);
System.out.println(
"两个参数的构造方法"
);
this
.hp = hp;
}