Katherine_Wang  

  初学java,学到了class这里,关于this的用法看不懂,在网上查了些资料终于有些明白了。下面写下我的理解,初来乍到,请多执教。

  关于java中this关键字的用法有以下几种,今天只讲对第一种方法的学习体会,以后遇到其他的几种使用方法再来更新。

    1. 这可以用来引用当前的类实例变量。

    2. 这可以用来调用当前的类方法(隐式)

    3. this()可用于调用当前类构造函数。

    4. 这可以作为方法调用中的参数传递。

    5. 这可以在构造函数调用中作为参数传递。

    6. 这可以用于从方法返回当前类实例。

例1:

 1 public class HelloWord {
 2     int num = 2014; // An instance variable
 3 
 4     public static void main(String[] args) {
 5         HelloWord helloWord = new HelloWord();
 6         helloWord.printNum(2000);
 7     }
 8 
 9     void printNum(int num) {
10         System.out.println("Parameter num: " + num);
11         System.out.println("Instance variable num: " + this.num);
12     }
13 }

  在上例中,第10行中的num是局部变量,即入参中传入的值,第11行中num是类中的变量,两者名字虽然一样,但是代表的值不一样。实际在idea中执行以下即可验证,执行结果如下

  

 

 

   debug一下,看下每一步变量中的值更加明显。

    

 

 

   到这里我还是对这个变量一样,但是执行对结果不一样有些疑问,this的作用是什么还是没有太明白,于是想试试把this去掉后会发生什么,代码如下

 1 public class HelloWord {
 2     int num = 2014; // An instance variable
 3 
 4     public static void main(String[] args) {
 5         HelloWord helloWord = new HelloWord();
 6         helloWord.printNum(2000);
 7     }
 8 
 9     void printNum(int num) {
10         System.out.println("Parameter num: " + num);
11         System.out.println("Instance variable num: " + num);
12     }
13 }

  debug结果:

  

 

 

   从图中可以看出程序执行第一步先将全局变量num初始化,即2014,然后到第一个systemout处将局部变量num即2000初始化,接着进行第3步,调试结果如下

  

 

 

   最终输出结果为

  

 

  至此,终于明白this--引用当前的类实例变量,这个作用的含义。个人理解其实无论在程序中是否引用this程序在初始化的时候已经将变量的值进行初始化,所以 你见或不见,this就在那里,无又不用由你。  

  以上是学习java的一点疑惑和理解,初学者,如有描述不恰当的地方欢迎指正,多谢!

 

  参考:https://www.w3cschool.cn/java/java-this.html

posted on 2020-05-30 14:42  Katherine_Wang  阅读(695)  评论(0编辑  收藏  举报