A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 939676244 中级黑马   /  2013-9-30 14:32  /  2554 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如题:为什么静态方法中不能存在this关键字?

13 个回复

倒序浏览
静态方法是随着类的加载而加载的,这个时候还没有对象呢,this是当定义类中功能时,该函数内部要用到调用该函数的对象时,这时用this来表示这个对象。简单的说就是静态方法先对象存在,而this就代表一个对象
回复 使用道具 举报
因为静态优先于对象存在。所以静态方法中不可以出现this。
静态时随着类的加载就已经加载了,而对象是声明的时候才会生成对象
this只能存在非静态的构造函数中
被static修饰的将会放在方法区或者叫共享区   被这个类所共享
回复 使用道具 举报 1 0
this默认指的是本方法被目前调用的对象,在内存空间中静态方法在一个单独的静态方法区中,当本类被加载的时候,先是加是加载静态方法区中的静态内容,这个时候,内存的堆中还没有对象的建立,不存在对象,所以,不能在静态方法中,使用this,因为这时向对象的指向没有意义。
回复 使用道具 举报
因为this是个引用,哪个对象调用方法就引用哪个对象。 而静态方法有可能不是被对象调用的,this无从引用。
静态方法是存放在内存中的数据段里,this和super调用的是堆空间里的应用对象不能调用数据段区域里的数据,因此静态方法中不能用this和super关键字
静态方法和静态类不属于单个对象,而是类的所有对象共享使用
而this代表当前对象
在静态方法中是不能使用this预定义对象引用的,即使其后边所操作的也是静态成员也不行.
因为this代表的是调用这个函数的对象的引用,而静态方法是属于类的,不属于对象,静态方法成功加载后,对象还不一定存在
回复 使用道具 举报
因为静态优先于对象存在。所以静态方法中不可以出现this。
回复 使用道具 举报
静态随着类的加载而加载,这时还没有对象,那就没有this这一说。
回复 使用道具 举报
静态方法先于于对象创建之前就运行,那时还没有对象呢,所以不能this关键字。
回复 使用道具 举报
this表示当前对象,而静态方法是在类加载时加载的,还没有创建对象!
回复 使用道具 举报
因为this代表一个对象,静态存在了,但是对象还没存在,所以用this是没事找事干。
回复 使用道具 举报
hadfs 中级黑马 2014-6-15 23:26:56
11#
因为this代表的是调用这个函数的对象的引用,而静态方法是属于类的,不属于对象,静态方法成功加载后,对象还不一定存在
回复 使用道具 举报
因为静态优先于对象存在。所以静态方法中不可以出现this。
静态时随着类的加载就已经加载了,而对象是声明的时候才会生成对象
this只能存在非静态的构造函数中
被static修饰的将会放在方法区或者叫共享区   被这个类所共享
回复 使用道具 举报
看到回答问题,使我受益匪浅!
回复 使用道具 举报
静态方法在对象建立之间就存在的,this代表的是本类对象
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马