Java中this用法详解

this关键字:
this关键字在方法体中,用于指代调用该方法的当前对象,简单的说:哪个对象调用方法,this指的就是哪个对象。严格来讲,在方法中需要通过this关键字来致命当前的对象。
下面我们创建一个A类,里面有三个方法和一个int型变量num,代码如下:

class A {
    int num = 0;


    public void Num(int num) {
        this.num = num;
        System.out.println(num);
        System.out.println(this.num);
    }   

    public void normalNum(int num) {
        num = num;
        System.out.println(num);
        System.out.println(this.num);
    }

    public void thisNum(int num) {
        System.out.println(this.num);
        this.Num(num);
    }

}

测试代码如下:

public static void main(String[] args) {
        int num = 10;
        A a = new A();  
        a.normalNum(num);
    }

输出结果:
10
0
证明A类中的属性num没有被修改,这里的num=num只是对传进来的参数又赋值了一次。
测试代码2:

public static void main(String[] args) {
        int num = 10;
        A a = new A();

        a.Num(num);

    }

输出结果:
10
10
调用了A类中的num方法 方法中用this.num表示被引用对象中的num,也就是A类中的num。
测试代码3:

public static void main(String[] args) {
        int num = 10;
        A a = new A();

        a.thisNum(num);

    }

输出结果:
0
10
10
在调用this.Num(num)前先打印A类中num的结果,是初值0
通过this调用A类中的Num(num)方法将num的值赋给A类中的num。

测试代码4:

public static void main(String[] args) {
        int num = 10;
        A a = new A();
        A a2 = new A();
        a.thisNum(num);
        a.print();
        a2.print();
    }

输出结果:
0
10
10
10
0

虽然a和a2都new了一个A,但是却不是同一个引用,这两个A在内存中是不同的两个A,由a和a2分别指向两个对象。所以a对A类中属性的修改对a2是无效的。也说明了谁引用的对象,这个对象的this属性就归谁用。

A类中添加如下代码:

class A {
    public A(){
            this(20);
        }

    public A(int num) {
        this.num = num;
    }
    ……
}

测试代码5:

public static void main(String[] args) {
        A a = new A();
        a.print();
    }

输出结果:
20
在执行无参构造时用this(num)调用A(num)为num赋初值为20.

总结:
1、this(参数列表),只能在构造方法中使用。
2、当局部变量和成员变量同名的情况下必须使用this指定成员变量的变量名。如果二者名称不同,系统会自动隐含一个this,可以不写。3、在方法中需要引用所属类的当前的另一个方法时需要使用this指定。

  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值