JAVA初级(十)对象之this关键字

这节介绍对象的this关键字

  • this关键字是什么?
  • 那么this一般怎么用?

this关键字是什么?

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的一点意思--------代表当前对象.

那么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);
也是一样的效果.当然有时候不这样写偏要这样多一层是有原因的。

这样多一层有时候就更安全.而且容易修改。
~这有一点代理的意思…你给我一家店,我帮你代理看店.但是店要怎么装修卖什么你自己看着办,

你可能感兴趣的:(java初级,JAVA初级)