this表示当前这个对象.你在哪个类里面写this就代表哪个对象
有这么一段代码
public class Student{
private String name="张三";
public void testThis(String name){
System.out.println(this.name);//表示当前对象
System.out.println(name);
}
}
然后执行
public static void main(String[] args) {
Student student = new Student();
student.testThis("李四");
}
结果输出:
张三
李四
观察代码,你发现参数的name和定义的name是不是名称一样.这样我要如何区分?用this,
this,name就代表Student定义的成员变量
name表示我调用方法时传入的参数.
强调this表示当前这个对象,也就是类的引用。
即this.name 并不是Student.name,
而是Student student = new Student()
这个的 student.name
到这应该就能知道this的一点意思--------代表当前对象.
1,调用一个方法传入的参数和成员变量同名并且要同时使用时。用this
–>这样才能区分你用的是哪个变量
例子在上面已经有了
2,调用自身的其它方法
public class Student{
private String name="张三";
public void testThis(){
this.testThis1();//this调用另一个方法
}
public void testThis1(){
System.out.println("另一个方法");
}
}
不过这没什么卵用.这个this大多数情况可以省略。
偶尔使用到内部类,然后内外部有相同方法名的时候会用到.
3,调用另一个构造方法
public class Student {
private String name="张三";
public Student (){
this("李四");
System.out.println(this.name);
}
public Student (String name){
System.out.println(name);
}
}
直接this() 根据括号内参数来选择构造方法
this()必须放在第一行且只能在构造方法中用.否则报错.
4,引用自身
public class Student extends Human{
private String name = "李四";
private void getName(Student student){
System.out.println(student.name);
}
public void getName(){
getName(this);
}
}
然后这样执行
public static void main(String[] args) {
Student st = new Student();
st.getName();
}
结果输出:李四
这样getName()方法用this这个自身引用传入带参数的getName(this)中执行方法
当然你把带参数的getName的private改成Public然后st.getName(st);
也是一样的效果.当然有时候不这样写偏要这样多一层是有原因的。
这样多一层有时候就更安全.而且容易修改。
~这有一点代理的意思…你给我一家店,我帮你代理看店.但是店要怎么装修卖什么你自己看着办,