Java:在一个方法内,成员变量和局部变量同名时,

,此时如果要访问实例变量可以用this,要访问静态变量可以通过类名。
这是书上的话,我的疑问是:那此时访问静态变量可以用this吗,只能通过类名吗?

理论上来说,静态变量存在于类的方法区而不是对象中,没有this指针指向它,因此只能通过类名.变量名的形式访问。

但实际上使用this.变量名也可以通过编译。此时编译器自动替换为类名.变量名,并给出一个警告提示你应该以静态方式访问此变量。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-07-09
静态变量不需要实例化,也不能通过this引用。
this指当前对象的实例。而静态变量无需实例化就可以构建,使用。而且无论是否有实例,有多少个实例,静态对象都指向同一个。所以不会有this的引用。
不仅如此。在静态方法中也不能使用this。 有一个理解方式。所有非静态函数都有一个隐藏的参数,this,把对象传了过去。静态方法没有这个隐藏参数,所以不能用this。
第2个回答  2018-07-09
可以用this,不过编译器会有警告,静态变量是属于类的变量,用类名方法比较合适而已
我习惯写代码的时候,为了图方便,全部用对象名来引用,最后用编辑器统一修改下调用方式
相似回答