JAVA基础之this关键字

本文深入探讨了Java中this关键字的用途,包括在方法内部获取当前对象的引用,以及在构造器中调用其他构造器,避免代码重复。通过具体示例,解释了this如何帮助解决方法调用和构造器调用中的常见问题。

java进行方法调用时,它如何知道是被谁调用的呢?为此编译器做了一些幕后的工作,它暗自把“所操作对象的引用”作为第一个参数传递给了方法。假设你希望在方法的内部获得当前对象的引用,由于这个引用是由编译器偷偷加上去的,所以没有任何标识符可用。但是为此java有一个专门的关键字this。

this只能在方法的内部使用,表示对“调用方法的那个对象的引用”。this的用法和其他对象引用并无不同,但要注意,如果在方法内部调用同一个类的其他方法,就不必使用this,直接调用即可(当然也可以手动添加,但是没有必要,编译器会自动添加)。只有当需要明确指出对当前对象的引用时,才需要使用this关键字。

public class Leaf {
    int i = 0;

    Leaf increment(){
        i++;
        return this;  //返回当前对象的引用
    }

    void print(){
        System.out.println("i =" + i);
    }

    public static void main(String[] args){
        Leaf x = new Leaf();
        x.increment().increment().increment().print();  //输出结果为i = 3
    }

}

this的另一种用法是在构造器中调用其他构造器。

可能为一个类写了多个构造器,有时想在构造器中调用另一个构造器,以避免代码重复,可用this关键字做到这一点。

public class Test{
    int i = 0;
    String s = "init value";

    //构造器1
    Test(int i){
        this.i = i;
    }

    //构造器2
    Test(String s){
        this.s = s;
    }

    //构造器3
    Test(int i, String s){
        this(i); //在构造器3中调用构造器1
        //this(s);  这一行代码会编译报错,是因为尽管可以用this调用另一个构造器,但是不能调用多个,而且必须将构造器调用置于最起始处。
    }
}

这个例子也展示了this的另一种用法,由于参数s的名称和类成员变量s的名称相同,可能会产生歧义,使用this.s来代表成员变量就能解决这个问题,在java代码中经常会出现这种写法。

注意:除了构造器以外,编译器禁止在其他任何方法中调用构造器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值