think in java 第四章 初始化和清除 第二部分

think in java 第三章的学习

this,this和static方法

 

1.this

我感觉think in java中对于this的概念讲得不是很好啊,干脆从查看别人的总结。

this使用范围

1、在类的方法定义中使用的this关键字代表调用该方法对象的引用。

2、当必须指出当前使用方法的对象是谁时,要使用关键字this。

3、有时使用this可以处理方法中成员变量和参数重名的情况。

4、this可以看做是一个变量,它的值是当前对象的引用。

注:this一般出现在方法中,当方法没有被调用时。并不知道this指向那个具体的对象。

当某个对象调用有this的方法时,this就指向调用这个方法的对象。

具体代码如下:

结果为:

可以见到,这里的this指的是testThis这个对象

this主要要三种用法:
1.表示对当前对象的引用!
2.表示用类的成员变量,而非函数参数,注意在函数参数和成员变量同名是进行区分!其实这是第一种用法的特例,比较常用,所以那出来强调一下。
3.用于在构造方法中引用满足指定参数类型的构造器(其实也就是构造方法)。但是这里必须非常注意:只能引用一个构造方法且必须位于开始!
4.注意:this不能用在static方法中!所以甚至有人给static方法的定义就是:没有this的方法!虽然夸张,但是却充分说明this不能在static方法中使用!

2.this和static方法

记得think in java 第二章 一切都是对象 第二部分中稍微提及了一下static,现在感受一下为什么static方法不可以用this

就像这段代码一样,瞬间就报错了,Cannot use this in a static context,static方法中不可以使用this。

为什么呢?

其实这个涉及对象在jvm中创建的过程问题。

因为Static方法是类方法,先于任何的实例(对象)存在。即Static方法在类加载时就已经存在了,但是对象是在创建时才在内存中生成的。而this指代的是当前的对象,在这个时候类还在加载呢,还没有到在内存中生成对象的步骤(即当前类对象还不存在),this怎么能代表一个不存在的对象呢?所以这时候就报错了。

3.总结

this稍微有用到,我觉得java中使用this其实和使用对象是一个道理,没有必要刻意去使用。

发表评论

电子邮件地址不会被公开。 必填项已用*标注