黑马程序员技术交流社区

标题: 为什么静态方法中不能存在this关键字? [打印本页]

作者: 939676244    时间: 2013-9-30 14:32
标题: 为什么静态方法中不能存在this关键字?
如题:为什么静态方法中不能存在this关键字?

作者: 请叫我马里奥    时间: 2013-9-30 15:02
静态方法是随着类的加载而加载的,这个时候还没有对象呢,this是当定义类中功能时,该函数内部要用到调用该函数的对象时,这时用this来表示这个对象。简单的说就是静态方法先对象存在,而this就代表一个对象
作者: 小痞痞    时间: 2013-9-30 15:53
因为静态优先于对象存在。所以静态方法中不可以出现this。
静态时随着类的加载就已经加载了,而对象是声明的时候才会生成对象
this只能存在非静态的构造函数中
被static修饰的将会放在方法区或者叫共享区   被这个类所共享
作者: 王飚    时间: 2013-9-30 20:05
this默认指的是本方法被目前调用的对象,在内存空间中静态方法在一个单独的静态方法区中,当本类被加载的时候,先是加是加载静态方法区中的静态内容,这个时候,内存的堆中还没有对象的建立,不存在对象,所以,不能在静态方法中,使用this,因为这时向对象的指向没有意义。
作者: 马晓平    时间: 2013-10-30 00:54
因为this是个引用,哪个对象调用方法就引用哪个对象。 而静态方法有可能不是被对象调用的,this无从引用。
静态方法是存放在内存中的数据段里,this和super调用的是堆空间里的应用对象不能调用数据段区域里的数据,因此静态方法中不能用this和super关键字
静态方法和静态类不属于单个对象,而是类的所有对象共享使用
而this代表当前对象
在静态方法中是不能使用this预定义对象引用的,即使其后边所操作的也是静态成员也不行.
因为this代表的是调用这个函数的对象的引用,而静态方法是属于类的,不属于对象,静态方法成功加载后,对象还不一定存在
作者: cuilitang    时间: 2013-10-31 14:32
因为静态优先于对象存在。所以静态方法中不可以出现this。
作者: 简★零度    时间: 2013-11-7 19:02
静态随着类的加载而加载,这时还没有对象,那就没有this这一说。
作者: 徐鹏跃    时间: 2013-11-17 18:55
静态方法先于于对象创建之前就运行,那时还没有对象呢,所以不能this关键字。
作者: time_out    时间: 2013-12-7 19:12
this表示当前对象,而静态方法是在类加载时加载的,还没有创建对象!
作者: 灵枫    时间: 2014-1-12 01:17
因为this代表一个对象,静态存在了,但是对象还没存在,所以用this是没事找事干。
作者: hadfs    时间: 2014-6-15 23:26
因为this代表的是调用这个函数的对象的引用,而静态方法是属于类的,不属于对象,静态方法成功加载后,对象还不一定存在
作者: liuzhiyong0718    时间: 2014-7-1 15:38
因为静态优先于对象存在。所以静态方法中不可以出现this。
静态时随着类的加载就已经加载了,而对象是声明的时候才会生成对象
this只能存在非静态的构造函数中
被static修饰的将会放在方法区或者叫共享区   被这个类所共享
作者: 沉默的枪刺    时间: 2014-10-9 00:33
看到回答问题,使我受益匪浅!
作者: wangshuying    时间: 2014-11-4 17:13
静态方法在对象建立之间就存在的,this代表的是本类对象




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2