20184月16学习java中的this关键字总结

1:什么是this关键字?

   this关键字是指当前对象。

      例如以下代码:

                               public clas Test

                               {

                                             String str=null;

                                            public  void hello(String str)//定义方法

                                            {

                                                    this.str=str;//这里的this.str就是指的是当前这个类中的成员变量str,所以this.str相当与

                                                                            test.str。

                                                                     //从这里可以看出this关键字代表的就是对象的名字

                                            }

                               }

2:为什么需要this关键字?

           由上面的例子可以看出,有一个成员变量str,同时方法中也有一个参数str,两个名字相同。但是java运行到这里它是如何判断的呢?是将成员变量str赋值给参数str,还是将参数str赋值给成员变量str?也就是说,当方法中有一个参数跟类中的成员变量一样时,java该如何去判断两个变量?这时this关键字就体现出它的功能了。this这个关键字代表的就是对象中的成员变量或方法,也就是说,在某个类的方法里面用到this指的是这个对象的成员变量或方法,而不是指成员方法的参数或者成员方法下的变量。但在这里有一个问题?既然要区分参数和成员变量,那么我们就把他们设置不一样的名字就不用到this关键字了。这是因为为了保持代码可读性,一般将方法内的参数名称和成员变量的名称保持一致,但是java提倡构造方法参数和类属性名称相同的做法。所以在需要用到this关键字。重要一点是为了区分方法参数和成员变量同名时进行区分。

3:this关键字的作用:

           为了便于别人阅读,提高代码的可读性。当别人看到this这个关键字会认为这是类中的成员变量或者方法,而不会认为是类方法中的局部变量。重要一点是区分方法参数和成员变量同名时进行区分。

 4:this关键字的用法例子

      (1):this关键字代表就是一个对象的名字。参考下面的代码。

                               public clas Test

                               {

                                             String str=null;

                                            public  void hello(String str)//定义方法

                                            {

                                                    this.str=str;//这里的this.str就是指的是当前这个类中的成员变量str,所以this.str相当与

                                                                            test.str。这只是理解,不是等于

                                                                     //从这里可以看出this关键字代表的就是对象的名字

                                            }

                               }

          例子2

                 

                                            public clas Test

                                             {

                                             String str=null;

                                            public  void hello()//定义方法

                                            {

                                                   return str;//这里不用到this.str是因为java编译器知道str是成员变量中的str,也可以说str是全局变量,作用域是在整个类的内部。这里方法hell没有参数str,所有不需要区分,不需要加this

                                            }

            例子3://调用普通方法

                                          public clas Test

                                             {

                                             String str=null;

                                          public void print()

                                            {

                                                System.out.println("***************************");

                                            }

          

                                             public void print()

                                            {

                                                  this.print();//调用普通方法

                                            }

                                            }

          例子4:调用构造方法

                  

总结this关键字的三种用法:

            1.  使用this关键字用来区分方法中的参数和成员变量,this指的是类的成员变量或者是方法。this代表是一个对象的名字,this关键字代表的是对象中的成员变量或方法,从this的用法可以看出规律:所以this肯定是用在某个类的方法里面

            2.   使用this关键字在自身构造方法内部引用其他构造方法

            3:使用this关键字代表自身类的对象

            4:使用this关键字调用成员方法或构造方法

有点理解为什么构造方法需要this,因为构造方法名称一样,但是参数不一样,如果有很多一样的构造方法,但是参数不一样,我们用到this就可以知道调用哪个构造方法,java编译器会从this调用的参数数量的不同去找是哪一个构造方法。

不过如果要使用这种方式来调用构造方法的话,有一个语法上的限制。一般来说,利用this关键字来调用构造方法,只有在无参数构造方法中第一句使用this调用有参数的构造方法。否则的话,翻译的时候,就会有错误信息。这跟引用成员变量不同。如果引用成员变量的话,this关键字是没有位置上的限制的。如果不熟悉这个限制的话,那么还是老老实实的采用传统的构造方法调用方式为好。虽然比较麻烦,但是至少不会出错。

待续更新!

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页