我也是昨天看到有同学问到这个问题,然后觉得自己想说的话太多了,而且想听取一下大家的意见!所以就心血来潮吧!?
别急,先拿this来说事!
this可以用于区分成员变量(person.age)和局部变量(age,作为参数)吧!当前函数所属对象(person)被创建以后,在堆内存中即有了该对象(person)以
及对象的成员变量(person.age),而在这同时,通过构造函数的初始化为成员变量(person.age)赋值,所赋的值即局部变量(age)的值,存在于栈
内存中。
执行this初始化之前:栈内存中有局部变量person(值为堆内存中person实例所在内存地址值),age(作为参数,值为具体值agenum)栈内存中有对象
(person)以及成员变量(age默认初始值0),执行之后即把堆内存中的成员变量(person.age)显示初始化为栈内存中局部变量age的值(agenum)
;
看起来呢,this好像一个变量,等效于栈内存中person地址值赋给变量this,指向堆内存中的成员(person实例)。这是变量的思路,但是this没有自己的
数据类型。
this是一个关键字而并非变量,关键字即java语言的执行规则,默认的一种行为,在虚拟机读取到this的时候,行为发生:到堆内存中查找调用该函数的对
象(person)的变量(成员变量);
this关键字呢就解决了不能重新定义一个“类类型变量”然后指向另一个“类类型变量”的问题,就如数组,数组本身就是对象,他能再定义一个数组指
向另一个数组吗?那么数组里面你要存什么?
呵呵,上面这些呢都是一些技术性的内容,所有观点都建立在我个人的理解之上,不具权威性,也没有黑马老师的认证,如有疏漏请同学们回帖指正。。
。
发表一下感慨:
这是一场不必要的“斗争”,我想由此暴露出了可能让很多同学走很多弯路的学习方法的缺陷。所谓学习嘛,理解万岁,但是每个人对理解都有自己的理
解。像大家学习java,又像上面这类问题,大家只要理解了this关键字的出现解决了什么问题,this的作用,this的用法不就可以了,没必要把内存搞出来
折腾一番吧。我的意思就是说,希望大家学习的时候不要在小问题或者不是问题上花费了太多精力和时间,咱们已经不像初中生时有那么多宝贵的青春年
华,可以把物理和化学当做一门学科来学,而是把java当做一门技术去学,胡适先生曾经说过,做人要在有疑处不疑,做学问要在不疑处有疑。尤其是在
当前社会,希望同学把握我好这个度。
呵呵,当然了我也是心血来潮在这里给大家开个玩笑,我没有丰富 的经验也没有很牛的技术,泛泛而谈罢了。本人没有针对任何具体学员,请同学们不要
对号入座!你们智者见智仁者见仁即可!有什么经验或意见还希望大家拿出来分享。。。。。{:soso_e196:}
该贴已经同步到 wang耀雨的微博 |
|