java中 this详解

java中 this详解

今天看项目代码,看到里面有个地方用this来引用本类中定义的方法。其实我一直对this这个关键字不是很理解,刚好这次机会来好好梳理一下this的作用

 

首先,还是按照为什么?是什么?怎么用?的思路去学习

【为什么要用this】

我相信,你一看到this,想到的应该就是对象类中构造函数以及get/set方法中this的应用

java中 this详解

 

为什么对象类中要这样写呢?

主要是因为这样可以精简代码,如果我们的类里面有多个构造函数,分别给不同的变量赋值,就可能会产生重复代码,为了解决这些重复代码,就可以用this(变量)的方式,来调用另一个构造函数,来给变量赋值.

 

至于为什么上开头那个地方的也要用this来调用自身类中的方法呢?

我个人觉得,使用this方式调用自身类中方法,同样也是可以精简很多代码

众所周知,在一个类中要调用自己的方法有两种

1.创建实例,然后调用方法

2.将方法定义成静态的,这样子就可直接通过类名进行调用了

3.现在我又知道了另一种,可以通过this直接调用(不要笑博主,谁让博主我当初学习java基础的时候,没有好好认真呢,一直没有正确的理解this的作用,不过现在我知道了~)

java中 this详解

 

【什么this?】

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

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

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

 

【怎么用?】

java中 this详解

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

My name is zhangsan
My name is wanger

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

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

java中 this详解

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

My name is zhang
My name is wan

另外,还有一种用法就是上面提到的通过this调用自身类中的方法

 

参考博客链接:https://www.cnblogs.com/livterjava/p/4709383.html