this的四种用法及注意事项

1.代表成员变量

我们如何区分开:同名的成员变量和在构造方法中的局部变量呢?---用this。

package com.dh.oop;

public class ThisDemo {
    
    public String name;
    
    public ThisDemo(String name){
        
        //将构造方法的参数值赋值给成员变量
        this.name = name;
    }
}

在构造方法中,this代表的就是成员变量。

2.代表当前对象的引用

我们知道,在实例化对象时,会利用构造方法进行初始化成员变量,所以每调用一次构造方法,初始化的都是正在实例化的这个对象的成员变量,即this,所以在构造方法中输出this,结果为当前对象的哈希码值。对象是引用数据类型,直接输出,输出的就是其地址。

package com.dh.oop;

public class ThisDemo {

    public String name;

    public ThisDemo(){
        
        //在构造方法中输出this,为当前调用构造方法实例化对象的哈希码值
        System.out.println(this);
    }

    public static void main(String[] args) {
        
        ThisDemo tom = new ThisDemo();
        ThisDemo jerry = new ThisDemo();
    }
}

3.在构造方法中使用this调用其它构造方法

package com.dh.oop;

public class ThisDemo {

    public String name;
    public int age;

    //第一个构造方法
    public ThisDemo(String name){

        //调用第二个构造方法
        this(name,18);
    }

    //第二个构造方法
    public ThisDemo(String name,int age) {

       this.name = name;
       this.age = age;
    }

    public static void main(String[] args) {

        //调用第一个构造方法
        ThisDemo tom = new ThisDemo("tom");
        System.out.println(tom.name+"\t"+tom.age);
    }
}

分析结果,虽然在main方法中调用的是第一个构造方法,但由于在第一个构造方法中调用了第二个构造方法,所以输出了tom 18。

注意:

必须放在第一行,所以每个构造器中只能使用一次,因为必须要保证在第一行,但是要注意,不能相互调用,否则书写代码时就会报错。

4.调用其它成员方法

 public void show(){
        System.out.println("show");
    }
    
    public void show1(){
        //调用其它成员变量,该this通常可省略
        this.show();
        show();
    }

这种用法了解一下即可~

5.this使用注意事项

this不能用于static方法中!

很很很浅显的解释一下:static修饰的方法是静态方法,是属于类的,它是在类装载的时候初始化的,也就是说它是最早出生的方法,这个时候对象都还没出生,你却让static方法去使用它,这肯定是不对的!你不能在你妈妈都没怀上你的时候就去给学校报名让你上学吧!


最最常用的就是1,以及注意事项要了解。

posted @ 2021-01-19 09:24  deng-hui  阅读(1469)  评论(0编辑  收藏  举报