欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java中的this 关键字

程序员文章站 2024-03-05 15:00:54
...

如何使用this关键字?

1、消除字段歧义

public class Writer {
    private int age;
    private String name;

    public Writer(int age, String name) {
        this.age = age;
        this.name = name;
    }
}

Writter类有两个成员变量,分别为age和name,在使用有参构造函数的时候,如果参数名和成员变量的名字相同,就需要使用this关键字消除歧义:this.age是指成员变量age是指构造方法的参数

2、引用类的其他构造方法

当一个类的构造方法有多个,并且它们之间有交集的话,就可以使用this关键字来调用不同的构造方法,从而减少代码量。
比如说:在无参构造方法中调用有参构造方法:

public class Writer {
    private int age;
    private String name;

    public Writer(int age, String name) {
        this.age = age;
        this.name = name;
    }

    public Writer() {
        this(18, "沉默王二");
    }
}

也可以在有参构造方法中调用无参构造方法:

public class Writer {
    private int age;
    private String name;

    public Writer(int age, String name) {
        this(); // 这里
        this.age = age;
        this.name = name;
    }

    public Writer() {
    }
}

需要注意的是,this()必须是构造方法中的第一条语句,否则就会报错。

3、作为参数传递

在下例中,有一个无参的构造方法,里面调用了print()方法,参数只有一个this关键字。
从结果中我们可以看出来,this就是我们在main()方法中new关键字创建的ThisTest对象。

public class ThisTest {
    public ThisTest() {
        print(this); // 这里
    }

    private void print(ThisTest thisTest) {
        System.out.println("print " +thisTest);
    }

    public static void main(String[] args) {
        ThisTest test = new ThisTest();
        System.out.println("main " + test);
    }
}
来打印看一下结果:

print aaa@qq.com
main aaa@qq.com

4、链式调用

类似于jQuery中的a.b().c().d()
this写在方法里

5、从内部类中访问外部类对象

说实话,自从Java 8的函数式编程出现后,就很少用到this在内部类中访问外部类对象了。来看一个示例:
Java中的this 关键字
Java中的this 关键字

在内部类InnerClass的构造方法中,通过 外部类.this 可以获取到外部类对象,然后就可以使用外部类的成员变量了。

-----------------------------------------

有的时候需要自己写一写才能记住,只是看看不动手很快就会忘记的。

也没什么人用this了吧

相关标签: JAVA基础