Java关键字this

目录

1 对象创建的过程和this的本质

2 this最常的用法:

3 this代表“当前对象”示例

4 this()调用重载构造方法


1 对象创建的过程和this的本质

this的本质就是相当于口述中的我:

this修饰的变量用于指代成员变量,其主要作用是(区分局部变量和成员变量的重名问题)

方法的形参如果与成员变量同名,不带this修饰的变量指的是形参,而不是成员变量

方法的形参没有与成员变量同名,不带this修饰的变量指的是成员变量

2 this最常的用法:

  1.  在程序中产生二义性之处,应使用this来指明当前对象;普通方法中,this总是指向调用该方法的对象。构造方法中,this总是指向正要初始化的对象。

  2. 使用this关键字调用重载的构造方法,避免相同的初始化代码。但只能在构造方法中用,并且必须位于构造方法的第一句。

  3. this不能用于static方法中。

3 this代表“当前对象”示例

public class User {
    int id; // id
    String name; // 账户名
    String pwd; // 密码
    
    public User() {
 
    }
    public User(int id, String name) {
//        super();					//构造方法的第一句总是super()
        this.id = id;				//this表示创建好的对象。
        this.name = name;
    }
    public User(int id, String name, String pwd) {
        this.id = id;
        this.name = name;
        this.pwd = pwd;
//        System.gc();
    }
    
    public static void main(String[] args) {
        User u1 = new User();
        User u2 = new User(101, "张三");
        User u3 = new User(100, "李四", "123456");     
    }
}

4 this()调用重载构造方法

可以传参调用对应的本类方法

public class TestThis {
    int a, b, c;
 
    TestThis() {
        System.out.println("正要初始化一个Hello对象");
    }
    TestThis(int a, int b) {
        // TestThis(); //这样是无法调用构造方法的!
        this(); // 调用无参的构造方法,并且必须位于第一行!
        a = a;// 这里都是指的局部变量而不是成员变量
// 这样就区分了成员变量和局部变量. 这种情况占了this使用情况大多数!
        this.a = a;
        this.b = b;
    }
    TestThis(int a, int b, int c) {
        this(a, b); // 调用带参的构造方法,并且必须位于第一行!
        this.c = c;
    }
 
    void sing() {
    }
    void eat() {
        this.sing(); // 调用本类中的sing();
        System.out.println("你妈妈喊你回家吃饭!");
    }
 
    public static void main(String[] args) {
        TestThis hi = new TestThis(2, 3);
        hi.eat();
    }
}

运行效果:

 

 

posted @ 2020-01-30 13:44  赵广陆  阅读(23)  评论(0编辑  收藏  举报