为了账号安全,请及时绑定邮箱和手机立即绑定

成员变量和局部变量重名问题

老师,当局部变量和成员变量重名的时候,说是优先选择局部变量! 但是 你是调用的 类中的方法,那输出来的按顺序下来 也是先从类中方法走呀! 这点不是很明白!

正在回答

2 回答

云承寒说的对, 可以用就近原则区分, 也可以表述成局部变量和成员变量主要的区别还是作用域的不同,

你要明白,成员变量的作用域是整个类内部任何一个地方,而局部变量的作用域则是定义它的方法体内部,当然如果你是定义在某一方法体内部的某一程序块(for循环或者if判断等)内,则它的作用于就是这一程序块。

其他深入的,你暂时可以先不了解,你记住每个变量或者说每个方法等都有他的作用域就行

不知道这样解释你明不明白。谢谢,欢迎追问

2 回复 有任何疑惑可以回复我~
#1

JAVA小白520 提问者

public static void main(String[] args) { testday1 a=new testday1(); a.cell(); } public class testday1 { int b=20;//成员变量 void cell(){ int b=10;//局部变量, 当成员变量和局部变量重名的时候则优先选择局部变量。 } 比如这个代码,我在main里面调用了cell方法 它调用的是int b=10; 是不是先走类方法里面 然后才走方法外面,这个是不是就是你们说的就近原则?
2015-12-03 回复 有任何疑惑可以回复我~
#2

慕冬雪 回复 JAVA小白520 提问者

局部变量和成员变量不是一个变量。在main里面调用了cell方法 它调用的是int b=10;操作的是局部变量,这个时候成员变量并没有参与。关于你那个成员变量, 并没有被加载,至于原因, 你去百度下java类加载顺序吧。
2015-12-03 回复 有任何疑惑可以回复我~
#3

JAVA小白520 提问者 回复 慕冬雪

好的 谢谢!
2015-12-03 回复 有任何疑惑可以回复我~
#4

dlfm 回复 慕冬雪

大神,可以搭便车问个问题吗?因为我单独问的时候得到的答案都不是很明白。 本教程视频中,为什么建了2个Class?我知道可以自行按照自己习惯只建立一个,但是既然老师这样操作肯定有原因, 我看到视频老师好像一个类是专门调用的,另一个是专门放了方法等。能否请教一下?
2016-05-24 回复 有任何疑惑可以回复我~
查看1条回复

有一个原则叫做就近原则,只要你能访问到,哪个声明的地方离你近就使用的哪个, 如果要访问成员变量, 用this.

0 回复 有任何疑惑可以回复我~
#1

JAVA小白520 提问者

可以举个例子吗?
2015-12-01 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第二季
  • 参与学习       531267    人
  • 解答问题       6327    个

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

进入课程

成员变量和局部变量重名问题

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号