方法中this的作用

Java里this的作用和用法

       this, 一个官方的说法是,this首先是一个对象,它代表调用这个函数的对象

根据面向对象的基本语法,每当调用变量或者函数的时候,都要按照类名.变量(函数)的格式来调用,意即每个变量或函数都必须属于某一个实际的对象而不是一个类(static的除外).

       在不会产生混淆的地方, this是可以省略的,但一般都会加上,(Think in Java里面说最好不要加,因为大家都不加)

例如,下面的程序中,类"Person"里面加与不加 this 编译运行后的结果是一样的:

package testThis;

public class Test {
    public static void main(String args[]){
        Person p1 = new Person();
        p1.name = "zhangsan";
        Person p2 = new Person();
        p2.name = "lisi";
        
        p1.talk();
        p2.talk();
    }
}

class Person{
    String name;
    void talk(){
        System.out.println("My name is " + this.name);
    }

}

上面的代码里第18行,不管是"this.name"还是"name",运行的结果都是:

My name is zhangsan
My name is lisi

 因为前面已经把p1和p2里面的name变量赋值,所以执行方法的时候,都会打印出它们各自的数据.

但是,当函数里面有参数时,如果函数的参数和成员变量一样,这时不加this的话,程序就会根据"就近原则",自动调用最近的值,如下面的代码:

 上面已经把对象p1和p2里面的变量name分别赋值为"zhangsan"和"lisi",但类"Person"里面的方法"talk"现在有了参数"String name",而且没有加"this",这时如果运行这个方法,方法就会接收后面参数传送给它的值,分别是"zhang"和"li",这时运行结果就会是:

My name is zhang
My name is li

所以,这里虽然对象p1和p2各有自己的变量 name,但它们调用的方法接收的却是参数里面的值,(从系统里各变量的颜色背景也可心看出对应的变量),而不是它们自己本身的值.所以这里输出的结果跟它们自己内部的值无关.

如果想要在它们各自调用talk()方法时分别输出自己内部的值,则需要在类 "Person"里面的方法"talk"里加上"this",这样,当它们各自调用这个方法时,输出的结果都是它们各自内部变量的值了:

上面介绍的是用this来调用本身对象的变量和函数,this还有一个重要的作用就是用来调用构造函数.可以用来精简代码.比如下例,如果我们的类里面有多个构造函数,分别给不同的变量赋值,就可能会产生重复代码,为了解决这些重复代码,就可以用this(变量)的方式,来调用另一个构造函数,来给变量赋值.




  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值