this关键字总结

经常使用到this这个关键字,关于这个关键字的用法和注意有哪些呢,这里对this关键字做一个总结,加深自己对这个关键字的理解和印象。

一、this的三种常见用法

1.this调用本类中的属性,也就是类中的成员变量

感觉用代码表述更为直白,代码示例:

package com.jxs.chapeter5;

import org.junit.Test;

/**
 * Created by jiangxs on 2018/4/10.
 */
public class ThisDemo1 {

    private int number;

    public void changeNumber(int number) {

        System.out.println("局部变量的number值为:" + (number + 5));
        System.out.println("成员变量的number值为:" + (this.number + 2));
    }

    @Test
    public void test() {

        int inputNum = 2;
        changeNumber(inputNum);
    }
}

测试结果:

局部变量的number值为:7
成员变量的number值为:2

Process finished with exit code 0

如上面的测试结果所示,this.number和number不是同一个变量,一个是成员变量,一个是局部变量,通过this.number调用了所在类中的成员变量

2.this调用本类中的其他方法

代码示例:

package com.jxs.chapeter5;

import org.junit.Test;

/**
 * Created by jiangxs on 2018/4/10.
 */
public class ThisDemo2 {

    private int number;

    public void changeNumber(int number) {

        System.out.println("局部变量的number值为:" + (number + 5));
        System.out.println("成员变量的number值为:" + (this.number + 2));
    }

    @Test
    public void test() {

        int inputNum = 2;
        this.changeNumber(inputNum);
    }
}

测试结果:

局部变量的number值为:7
成员变量的number值为:2

Process finished with exit code 0

this关键字除了可以引用变量或者成员方法之外,还有一个重大的作用就是返回类的引用。如在代码中,可以使用return this,来返回某个类的引用。此时这个this关键字就代表类的名称。如代码在上面ThisDemo2类中,那么代码代表的含义就是return thisDemo2。可见,这个this关键字除了可以引用变量或者成员方法之外,还可以作为类的返回值,这才是this关键字最引人注意的地方。

3.this调用本类中的其他构造方法,调用时要放在构造方法的首行

代码示例:

package com.jxs.chapeter5;

public class ThisDemo2 {

    private String name;
    private int age;

    public ThisDemo2() {
        System.out.println("这是构造器1");
    }

    public ThisDemo2(String name) {

        this();
        this.name = name;
        System.out.println("这是构造器2");
    }

    public ThisDemo2(String name, int age) {

        this(name);
        this.age = age;
        System.out.println("这是构造器3");
    }

    public static void main(String[] args) {

        String userName = "jiangxs";
        int age = 24;
        ThisDemo2 t = new ThisDemo2(userName, age);
        System.out.println(t);
    }

    @Override
    public String toString() {
        return "ThisDemo2{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

测试结果:

这是构造器1
这是构造器2
这是构造器3
ThisDemo2{name='jiangxs', age=24}

Process finished with exit code 0

二、使用this要注意的问题

1.this调用本类中的其他构造方法时,调用时要放在构造方法的首行!调用时要放在构造方法的首行!调用时要放在构造方法的首行!(重要的事情说三遍),因为初始化的动作要先执行,若初始化中还含有初始化要先执行内部的初始化。同时,可以用this调用一个构造器,但却不能调用两个this(this调用构造方法只能放置在构造器首行)
2.this不能用在static方法中。

好了,this的用法和事项在这里就整理完毕了~

  • 6
    点赞
  • 13
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

dbjxs

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值