初学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的一点疑惑和理解,初学者,如有描述不恰当的地方欢迎指正,多谢!