this用在类内部,示意类实例本身。
this关键字是类内部当中对本身的一个援用,能够轻易类中要领接见本身的属性。
java中this用法
1、当局部变量和成员变量重名的时刻,在要领中运用this示意成员变量以示辨别。
class Demo{ String str = "这是成员变量"; void fun(String str){ System.out.println(str); System.out.println(this.str); this.str = str; System.out.println(this.str); } } public class This{ public static void main(String args[]){ Demo demo = new Demo(); demo.fun("这是局部变量"); } }
剖析:上面的类Demo中有一个成员变量str和一个局部变量str(类要领中的形式参数),很显然局部变量和成员变量重名,这个时刻平常在要领中直接运用str实际上是运用局部变量str,对成员变量str没有任何影响,此时如果须要对成员变量做点什么,就必需运用this关键字。
有个题目,如果要领中没有str,那末在要领中运用成员变量str会是什么情况呢?实际上是要领内的一切操纵都是针对成员变量str的。java编程头脑的84页中部有如许一句话:如果在要领内部挪用同一个类的另一个要领,就没必要运用this。一样,在一个要领中如果没有局部变量和成员变量同名,那末在这个要领中运用成员变量也没必要运用this,能够运转下面的代码看看。
class Demo{ String str = "这是成员变量"; void fun(String str1){ System.out.println(str1); System.out.println(str); } } public class This{ public static void main(String args[]){ Demo demo = new Demo(); demo.fun("这是局部变量"); } }
2、this关键字把当前对象传递给其他要领
这里有个很典范的例子,就是java编程头脑的85页的例子。我们拿出来细致研讨。
class Person{ public void eat(Apple apple){ Apple peeled = apple.getPeeled(); System.out.println("Yummy"); } } class Peeler{ static Apple peel(Apple apple){ //....remove peel return apple; } } class Apple{ Apple getPeeled(){ return Peeler.peel(this); } } public class This{ public static void main(String args[]){ new Person().eat(new Apple()); } }
这是我本身的熟悉,或许不准确,看看书中是如何说的:Apple须要挪用Peeler.peel()要领,他是一个外部的东西要领,将实行由于某种原因而必需放在Apple外部的操纵(或许是由于该外部要领要应用于很多差别的类,而你却不想反复这些代码)。为了将其本身传递给外部要领,必需运用this关键字。
剖析:想象一个场景,如果种种生果去皮的事情都是一样的,只需给我生果,我都按一样的要领去皮。那末连系上面的例子,传进来一个生果,我们吃之前getPeeled(),必需将此生果作为参数传递给外部的peel(),用this来代表本身传递给外部要领。
3、当须要返回当前对象的援用时,就常常在要领写return this;
这类做法的优点是:当你运用一个对象挪用该要领,该要领返回的是经由修改后的对象,且又能运用该对象做其他的操纵。因而很轻易对一个对象举行屡次操纵。
public class This{ int i = 0; This increment(){ i += 2; return this; } void print(){ System.out.println("i = " + i); } public static void main(String args[]){ This x = new This(); x.increment().increment().print(); } }
效果为:
4
4、在组织器中挪用组织器须要运用this
一个类有很多组织函数,有时刻想在一个组织函数中挪用其他组织函数,以防止代码反复,能够运用this关键字。在java编程头脑中有如许一段话:一般写this的时刻,都是指“这个对象”或许“当前对象”,而且它本身示意对当前对象的援用。在组织器中,如果为this添加了参数列表,那末就有差别的寄义。这将发生对相符此参数列表的某个组织器的邃晓挪用;如许挪用其他组织函数就有了直接的门路。
细致剖析:
从主函数最先,new Flower()会在内存分派空间,初始化对象,初始化对象是挪用组织函数,这里没有写任何参数,当然是挪用默许组织函数,就是谁人无参的构函数。
这个无参的组织函数的第一行代码就是this("hi",122);这里的意义是该无参组织函数又去挪用带两个参数的组织函数,来到带两个参数的组织函数,第一行代码是this(s);这行代码自动婚配带一个参数的组织函数,发明Flower(String ss)这个比较婚配,都是String范例的参数。
然后挪用了带有一个String范例参数的组织函数,打印:只要String范例的参数的组织函数 s = hi
;然后回到上一级挪用函数,就是带有两个参数的组织函数,打印输出:有String和int范例的参数的组织函数
;再回到上一级,就是无参组织函数,打印:默许组织函数
。
此时组织函数已初始化完成新建的对象,末了在主函数的末了一行代码中打印:petalCount=122 s=hi
。
画个图看得更邃晓。
有几点要注重:
1,this只能够挪用一个组织器,在一个组织器中不能同时挪用两个组织器;
2,必需将你所挪用的组织器放在最最先的位置,这也诠释了为何不能在一个组织函数中挪用两个组织器,那第二个必将不在最最先位置。
3,本例中在带有两个参数的组织函数中能够用this挪用其他恣意一个只要一个参数的组织函数,这取决你本身,随意调哪个都能够。
4,在组织函数以外的要领内不能运用this挪用组织函数。代码内里解释的都不能准确编译。
this总结
1、示意对当前对象的援用!
2、示意用类的成员变量,而非函数参数。
3、用于在组织要领中援用满足指定参数范例的组织器(实在也就是组织要领)。然则这里必需异常注重:只能援用一个组织要领且必需位于最先!
4、很明显this不能用在static要领中,由于this指代当前对象,而static则无对象之说。
ki4网,大批的免费Java入门教程,迎接在线进修!
以上就是java中this是什么意义?的细致内容,更多请关注ki4网别的相干文章!